草庐IT

xml - 是否有类似 RSS 的标准格式用于分布式(类似论坛)通信?

coder 2024-06-24 原文

要使用电子邮件相互通信,用户不需要使用相同的“提供商”(一些用户可能使用 gmail、其他 yahoo 或 hotmail,他们仍然可以互相写电子邮件)。不幸的是,社交网络并非如此。使用 Facebook 的用户无法看到使用 Google+ 的用户的帖子、评论、赞和分享,反之亦然。

但为什么会这样呢?让我们想象一下下面的架构。每个用户都可以使用他/她喜欢的任何提供商“广播”。 RSS 格式提供了这种可能性。任何用户都可以选择任何“提供商”来生成他/她的 RSS 提要并查看他/她订阅的用户的 RSS 提要。因此,仅通过按原样使用 RSS,我们就已经可以构建一个类似 Twitter 的分布式系统(您可以发帖,可以关注其他人,但不能分享)。

这种方法仍然缺少评论其他帖子的可能性(喜欢、不喜欢或评级也可以被视为评论)。理论上,可以像发布帖子一样发布/广播评论。其实评论也是帖子,唯一的区别是它们是“附加”在其他帖子上的。因此,可以生成类似 XML 的 RSS,其中一些帖子(那些评论)有额外的标签,其中包含被评论的帖子的 URL。

通过 RSS 的如此小的扩展,可以构建分布式社交网络或分布式社交新闻系统(如 Reddit)。

有朝这个方向发展的东西吗?

最佳答案

分布式社交网络

你所描述的听起来很像 Distributed social network ,一个分散并分布在不同提供商之间的网络,允许每个站点的用户与任何相关站点的用户或您所说的提供商进行通信。这也提出了一点,即提供商实际上不需要成为这样的站点,但仍可以提供所需的服务。

这种模式已得到 EFF 的认可,认为它可以“合理地将控制权和选择权交还给互联网用户”。


协议(protocol)

OStatus

OStatus 是目前由 W3C 维护的规范,它建立在 Atom 和 RSS 提要之上,并且 PubSubHubbub .

PubSubHubbub provides a way to subscribe, unsubscribe and receive updates from a resource, whether it's an RSS or Atom feed or any web accessible document

PubSubHubbub 的规范是 here , 以及 OStatus here ,我在下面转载了其中的一些重要部分:

Updates are represented as Activities in Atom. Typical updates would be represented in the default Activity Schema with activity verb "Post" and activity object type "Note", "Status" or "Comment".

A spatial location for the update object should be encoded as GeoRSS element as part of the activity. Attachments to an update should be represented as enclosures.

Users are identified by URIs.

Users SHOULD have a profile URL, which SHOULD be an HTTP or HTTPS reference to an HTML page including discovery information for the user's feed. The profile URL SHOULD be represented as a link[@rel=alternate,@type=text/html] in the Activity subject, actor, or object item, otherwise the URI MAY be used if it is an HTTP or HTTPS URL.

The publisher server uses PubSubHubbub [push] to notify subscribers of new updates.

Servers use Salmon to post social events to users or groups.

鲑鱼

描述了 Salmon 协议(protocol) here , 协议(protocol)流程描述如下:

A source provides an RSS/Atom feed of content. It includes a Salmon link in its feed:

An aggregator reads the feed (ideally via a push mechanism such as PubSubHubbub), and sees from the link that it is Salmon-enabled. It remembers the endpoint URL for later use.

When an aggregator's user leaves a comment on a feed item, the aggregator stores the comment as usual, and then also POSTs a salmon version of it to the source's Salmon endpoint

The source responds to the salmon with standard HTTP codes - 2xx for OK, 4xx for input problem, 5xx for source / server error. The usual result is for the salmon to be published along with other comments on the source's web page. Note that sources are not obligated to actually publish the salmon -- they may moderate them, spam block them, aggregate or analyze them instead. However, if the source does publish the salmon in a comment feed, it has to maintain certain fields to make the protocol work end-to-end.

国家安全局

Adrian D. Thurston 写了一篇 paper基于分布式社交网络协议(protocol) (DSNP)。在编写协议(protocol)时,该协议(protocol)的版本为 0.6,但据我所知,开发已经停止。本文涉及诸如基于 RSA 的身份、交友协议(protocol)、无密码登录、广播和消息签名 key 等方面。 reference implementation可用。

其他/软件

维基百科的 Comparison of software and protocols for distributed social networking可能会有一些用处。

  • Twister是一个类似Twitter的微博平台,利用加密货币比特币和文件交换方式BitTorrent

  • Friendica有一个去中心化的架构,其中“‘ friend ’可以来自 Facebook、Diaspora、Twitter、StatusNet、pump.io、网络日志和 RSS 提要”。然而,它确实警告说,“一些公司拥有的网络对我们如此无缝地整合他们的网络并不满意,并开始关闭和限制与他们的成员互动的能力”。

  • Redmatrix是一个去中心化的通信和发布平台,作为一个全局分布式网络运行

关于xml - 是否有类似 RSS 的标准格式用于分布式(类似论坛)通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32759823/

有关xml - 是否有类似 RSS 的标准格式用于分布式(类似论坛)通信?的更多相关文章

  1. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  2. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  3. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  4. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  5. ruby - 检查数组是否在增加 - 2

    这个问题在这里已经有了答案:Checktoseeifanarrayisalreadysorted?(8个答案)关闭9年前。我只是想知道是否有办法检查数组是否在增加?这是我的解决方案,但我正在寻找更漂亮的方法:n=-1@arr.flatten.each{|e|returnfalseife

  6. ruby - 检查字符串是否包含散列中的任何键并返回它包含的键的值 - 2

    我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案

  7. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  8. ruby-on-rails - Ruby 检查日期时间是否为 iso8601 并保存 - 2

    我需要检查DateTime是否采用有效的ISO8601格式。喜欢:#iso8601?我检查了ruby​​是否有特定方法,但没有找到。目前我正在使用date.iso8601==date来检查这个。有什么好的方法吗?编辑解释我的环境,并改变问题的范围。因此,我的项目将使用jsapiFullCalendar,这就是我需要iso8601字符串格式的原因。我想知道更好或正确的方法是什么,以正确的格式将日期保存在数据库中,或者让ActiveRecord完成它们的工作并在我需要时间信息时对其进行操作。 最佳答案 我不太明白你的问题。我假设您想检查

  9. ruby - 检查日期是否在过去 7 天内 - 2

    我的日期格式如下:"%d-%m-%Y"(例如,今天的日期为07-09-2015),我想看看是不是在过去的七天内。谁能推荐一种方法? 最佳答案 你可以这样做:require"date"Date.today-7 关于ruby-检查日期是否在过去7天内,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/32438063/

  10. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

随机推荐