DEC

19

Mon

Author:EMINARCISSUS

被拍砖40次,接着砸!

最近时间富裕打算写两个bot,一个twitter <-> XMPP gateway,一个是春菜的Bot扩展,于是在整理xep-0060和PEP的时候,挖出了年初读到Pubsub的时候写的一个project,大体就是类微博形式的论坛:

1:整个论坛以用户为出发点,以XMPP为backend

2:其中每一条发言的本体是一条微博

3:以relation的方式通过XMPP-Proxies的形式发布到主体为Pubsub节点的论坛下并广播给关注某一Topic的主体(用户)

4:每一条微博都以Atom的形式输出并持久化

5:Web从数据库抓取历史条目,前端通过Strophe实现实时交互

6:为保证Low latency,持久化过程和Web发布端均为XMPP的Consumer.

7:全站点皆可实现自由组合多用户聊天室或单点聊天,同时或许可以在以后实现视频或音频多用户交流。

8:或许能够遵从OMB协议(目前对于该协议唯一的障碍就是是否要有字数限制)。

当时因为对XMPP协议还不是很熟悉,于是只是写了这么一个设想。

现在面对当时写的该形式的论坛,仔细想想和现在已有的Twitter并没有太大的区别,不过细微已有的区别如下:

1:Twitter是以Tag的形式实现类论坛的,和现在的贴吧和tora有些相似,每个人都可以建立自己的tag或者参与trending的tag,来实现Topic指向用户间交流。但是这样对于一些指向性的主题而言缺少可控性,不利于搜索所需。

2:Twitter的交流形式和Chatroom(MUC)有些相似,不过缺少XHTML-IM特性,虽然用户可以修改客户端来改进体验,不过客户端的构建是需要大量的时间和精力的.一旦有新系统平台介入很难找到高度对应的客户端。

3:实时完整的XMPP API,可以在任何平台下以任何喜欢的XMPP客户端进行交互。

 

和当前各种论坛框架相比,这种形式的论坛有如下区别:

1:高度实时:对于每一条Topic可以拥有一种实时的聊天的体验(Web端下采用BOSH,XMPP可能在Websocket成熟后采用Websocket,也可以使用XMPP客户端参与讨论)

2:用户指向性:每个用户本身都是一个XMPP用户。

3:可简单的更改或分离特性。(Web,db,xmpp是完全分离的,同时除了xmpp自身以外每个service都以xmpp消费者的形式在网络中存在)

4:是一种类SNS的存在。

 

目前来看,实现这种方案主要的问题是:

1:全局的负载瓶颈在XMPP的负载能力上。虽然Openfire和ejabberd都支持cluster,不过具体承载能力依然未知。

2:每个Service Consumer bot的承载能力,这个问题估计不会太大。

3:XEP部分协议还未敲定,偶目前最关心的就是XEP-253和XEP-254,对于Persistence,本身就不打算通过XMBB Backend来做。

4:论坛的Spam.......这个绝对是个大问题...

 

依然是个雏形,打算先做些小的测试,到时候可能写个beta出来玩玩,看看时间够不够吧...~

smiley