项目是这样的: 三个部分,1,android 的客户端,2,rails 的 web 端(xmpp4r + Strophe.js),3,xmpp server(openfire)
因为有很多定制的需求,所以需要扩展 xmpp 协议
我现在是这么做的,android 端的一部发定制化的需求是通过 rails 的 api 接口 向 xmpp 服务器 发送消息的,不知这样做是否合理?
因为以前没有 xmpp 开发经验,所以,一直摸着石头过河,大家能给点建议不?
我说的不是 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 通信即可
@alucardpj @ign21st @yedingding @Richie @sharp 恩。谢谢你的回答。因为我是第一次尝试做基于 xmpp 的项目,主要是架构的问题,没有一个清晰的思路。简单的一点的说:就是想做一个:通过 xmpp 服务器的,能实现 android 和 web 通信的产品。现在我用的方案,我总觉得问题很大。但又没有一个更好的方案。写 openfire 的插件也行,但是这样就与 openfire 绑定了。不知道大家有什么好的解决方案。谢谢了。