需要帮助了解聊天、XMPP、jabber id 等

Posted

技术标签:

【中文标题】需要帮助了解聊天、XMPP、jabber id 等【英文标题】:Need help understanding chat, XMPP, jabber id's, etc 【发布时间】:2011-03-11 16:12:21 【问题描述】:

我正在创建一个在 iosandroid、BB 和 Win7 上运行的移动应用程序。这是一个基于位置的应用程序,您可以加入群组,然后能够查看群组中其他成员的位置。这一切都很好。我目前正在使用 GAE 来管理组。

现在我想添加群组成员相互聊天的功能。没有 1-1 IM,但 1-many 聊天室。因此,当您访问应用程序中的某个组时,您可以键入一条消息,该组的所有其他成员都将能够看到您的消息。我开始走移动推送(APNS、C2DM 等)的道路,但认为必须有更好的方法。我只希望在应用程序实际运行时收到消息,因此在这种情况下,移动推送的重要部分并不重要。但我当然也不想投票。

所以我开始研究 XMPP,它似乎是正确的解决方案,但我是这项技术的新手。我不希望用户必须已经拥有或使用他选择的某些服务创建一些在线 IM 存在。我只想在移动应用程序中有一个“用户名”首选项,这就是他需要做的所有事情。

所以这就是我真正需要帮助的地方。我可以以编程方式在某处创建聊天室并为组的用户创建 id 吗?我是否需要托管自己的 XMPP 服务器(据我所知不适用于 GAE)。

或者我只是完全没有更好的解决方案?

非常感谢您的帮助。

沃伦

【问题讨论】:

【参考方案1】:

我使用QuickBlox.com 作为我的应用程序的后端。它内置了基于 XMPP 的 Chat 模块和 Messages 模块,可以帮助您向 iOS、Android 和 WP7 发送跨平台推送。

顺便说一句,聊天模块支持 MUC(多用户聊天)中的群组,他们也有一个 sample 将聊天集成到我们的应用程序中。

【讨论】:

【参考方案2】:

检查http://hosted.im/有免费计划(5个用户)至少你可以测试它。

关于 XMPP 实现,你可以做你想做的,但你需要运行你自己的 xmpp 服务器

服务器:

ejabberd 开火 贾伯德 jabberd2 老虎酶

我不知道GAE是否支持扩展我在这里帮不了你。

希望这能有所帮助。

【讨论】:

【参考方案3】:

即使这个问题有点老了,我认为这对其他技术蜜蜂有用.. :)

您可以使用 Quickblox 作为您的服务器,并向他们注册,他们为用户提供不同的计划,包括免费计划。

此外,如果您愿意,您可以维护自己的服务器。

aSmack 是为 android 实现 XMPP 的好库。您可以从 aSmack 站点获取 jar 和源代码。谷歌一下。

但根据我自己的经验,实现多用户聊天有点困难..

【讨论】:

嘿,我想实现多用户聊天..使用 aSmack,到目前为止,我确实创建了房间并获得了可用房间,我在这里遇到了问题,我想显示那个房间的讨论历史,我确实喜欢这个Message msg2 = muc2.nextMessage(1000); 我重复这条线好几次我从历史中收到了 20 条消息,但是现在当我回到任何房间时,我在上面的代码中得到了 NPE,解决方案是什么。以及如何为传入聊天创建侦听器.. 我认为这个有你想要的一切..igniterealtime.org/builds/smack/docs/latest/documentation/… 然后试试这个示例项目github.com/redsolution/xabber-android他们在这个项目中使用了一个Smack源。我也在处理尚未完成的多用户聊天:(但是我正在获取房间的先前聊天,并且邀请听众工作正常,但邀请拒绝听众仍然有一些问题。如果你发现任何有用的东西,请也与我分享它会有很大的帮助。:) 谢谢。

以上是关于需要帮助了解聊天、XMPP、jabber id 等的主要内容,如果未能解决你的问题,请参考以下文章

如何了解更多 XMPP/Jabber 命令

如何通过 Jabber/xmpp 创建聊天 [关闭]

需要帮助了解 xmpp xeps

检查在xmpp服务器中注册的jid(jabber id) - iOS xmpp框架

如何将 custon xmpp/jabber 请求发送到服务器

XMPP:如何通过 Jabber Id 查询特定的名册信息