Rails 基于 xmpp 的 Rails 项目该如何构建?

chucai · 2012年04月26日 · 最后由 admins 回复于 2014年09月10日 · 7848 次阅读

项目是这样的: 三个部分,1,android 的客户端,2,rails 的 web 端(xmpp4r + Strophe.js),3,xmpp server(openfire)

因为有很多定制的需求,所以需要扩展 xmpp 协议

我现在是这么做的,android 端的一部发定制化的需求是通过 rails 的 api 接口 向 xmpp 服务器 发送消息的,不知这样做是否合理?

因为以前没有 xmpp 开发经验,所以,一直摸着石头过河,大家能给点建议不?

匿名 #1 2012年04月26日

一般情况,android 直接向 openfire 发送消息,跟 rails 么有关系吧

你的定制化的东西是 xmpp 插件吗

#1 楼 @sharp 不想做 xmpp4r 的插件,那样的话,替换成其他的 xmpp 服务器的话,又需要另外的定做。

匿名 #3 2012年04月26日

我说的不是 xmpp4r 之流,你不是说你要扩展 xmpp 吗?是指打算扩展哪个草案 http://xmpp.org/xmpp-protocols/xmpp-extensions/

能不能介绍一下这三个部分的关系?android 客户端是 xmpp client 直连 openfire?那么 rails web 端是单纯的 web 版 xmpp client 吗?我这样理解对不对?

如果 android 客户端直连 openfire 的话,完全可以直接扩展 xmpp 协议,openfire 和 android 做好对应实现就可以了,中间加上一层 rails api 实在是有些多余

楼主的问题太过宽泛,难以找到切入点回答呀。

得看定制什么了,大部分情况下是不需要的。你如果只是通过 api 向 xmpp server 发消息,那么可以考虑用 Component Protocol, 也可以用 xmpp4r 构建 stanza 直接和 server 做交互。具体还是看需求了。

xmpp4r 是 ruby for xmpp library, Strophe.js 是 js for xmpp library, android 的应该是https://github.com/pfleidi/yaxim,这些都是与 xmpp server(openfire) 通信的 client, 你要扩展 xmpp 协议,openfire 有 plugin 机制可以扩展,然后不同的 client libraray 做定制的修改与 server 互通即可,一般不建议一个 client 链接到另外一个 client,再与 xmpp server 互通,xmpp 协议是固定的,就算你扩展了,也是有一定规则的,做中间信息桥接的话是有时间和性能损耗的,之前做过一个 xmpp4r + strophe.js + openfire 的即时聊天系统,web 客户端使用 strophe.js 通过 nginx 搭建的反向代理链接直接与 openfire 通信,rails 也直接使用 xmpp4r 与 openfire 通信即可

匿名 #9 2012年04月27日

偶用的是 ejabberd+http://strophe.im/ 在搞

@alucardpj @ign21st @yedingding @Richie @sharp 恩。谢谢你的回答。因为我是第一次尝试做基于 xmpp 的项目,主要是架构的问题,没有一个清晰的思路。简单的一点的说:就是想做一个:通过 xmpp 服务器的,能实现 android 和 web 通信的产品。现在我用的方案,我总觉得问题很大。但又没有一个更好的方案。写 openfire 的插件也行,但是这样就与 openfire 绑定了。不知道大家有什么好的解决方案。谢谢了。

#10 楼 @chucai 标准协议或者已有 XEP 不符合你的需求吗?自己写插件是次优选择

@sharp 你给的那个架构图里把 ejabberd 换成 openfire, 就跟我自己之前架构的一样了。

匿名 #15 2012年04月27日

你还没有搞清楚需求或者自己的问题所在

#11 楼 @Guest 你用过吗?这个架构情况怎样?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号