专业IM即时通讯软件开发,值得信赖!

如何给openfire等开源IM增加LBS附近的人功能

即时通讯软件开发 云聊IM 72℃

解决方案1

1. 可以参考XMPP协议扩展 XEP0080   http://xmpp.org/extensions/xep-0080.html  来实现两个IM账户之间的位置分享;

2. 采用自定义的扩展XMPP协议,在数据库和应用代码中计算GEO距离,然后按由近到远的顺序排序即可。

方式2有我实现的一个开源openfire插件可供参考,大体协议如下:

REQUEST

<iq id="c919" type="get" from="chris@im.nodexy.com/TCL-S960">
<query xmlns="com.nodexy.im.openfire.location">
    <item user="chris" lon="22.323009" lat="29.098763"/>
</query>
</iq>

RESPONSE

<iq id="c919" type="result" from="chris@im.nodexy.com/TCL-S960">
<query xmlns="com.nodexy.im.openfire.location">
    <item user="chris1" lon="22.323009" lat="29.098763" sex="0" online="30min"/>
    <item user="chris2" lon="22.323009" lat="29.098763" sex="0" online="30min"/>
    <item user="chris3" lon="22.323009" lat="29.098763" sex="0" online="30min"/>
    ... ...
</query>
</iq>

插件地址: https://github.com/node/openfireLBS

解决方案2

附近的人的实现实际是和IM没有关系的。唯一需要集成的地方就是当查看附近的人的方法返回了一个用户列表后,你如果想和这个用户列表中的某个人聊天时,你可以向这个用户发起一个加好友请求。

所以,附件的人只要能获取附件的人的信息就可以了,没有必要依赖IM系统实现。

比如,我们完全可以用一个http restful 接口来实现这个功能。关键问题是服务器上需要知道用户的地理位置信息,这个位置信息需要客户端上报给服务器。

这样看附件的人的功能是比较容易实现的。

喜欢 (0)
仿微信聊天软件开发
点击这里给我发消息