浏览器上的即时消息

Posted

技术标签:

【中文标题】浏览器上的即时消息【英文标题】:Instant Message on browser 【发布时间】:2009-08-11 10:42:03 【问题描述】:

简介:我想开发一个聊天客户端,用户可以在浏览器上聊天,我使用协议调用xmpp。由于 html5 web socket 尚不可用,我尝试使用 flash xmlsocket。

问题:我无法通过浏览器连接到服务器。我不知道为什么,但我认为这是服务器配置的问题。

问题:哪个是最适合这项工作的 jabber 服务器?

【问题讨论】:

问题和问题目前并不真正匹配。 【参考方案1】:

这很可能是权限问题。要么就是你刚刚配置了错误的主机/端口来连接。 Flash 不允许连接到其他主机,而不是从它自己获得的主机。您必须在请求的接收 端明确允许 Flash 连接(因此在您要连接的聊天服务器上)。 Google for crossdomain.xml 以获取更多信息。

【讨论】:

【参考方案2】:

ejabberd 听起来是一个适合您的选择。 ejabberd 是用 erlang 编写的 xmpp 服务器,使用非常广泛。众所周知,许多著名的基于 Web 的即时通讯服务(如 www.meebo.com 等)都在 ejabberd 上运行。它允许您安装其他传输,从而使您能够与其他协议(如 yahoo、msn、icq 等)的用户交谈。

您还可以查看 ignite realtime 的 xiff 动作脚本库。它是动作脚本中的 xmpp 客户端库。如果你使用这个库,你只需要实现 ui 组件。

【讨论】:

【参考方案3】:

嗯... flash 没问题,但你最好使用BOSH 之类的东西,它基本上是 XMPP 上的 HTTP 层。

Ejabberd 将是一个很好的服务器,因为它支持 BOSH,我不知道 OpenFire 或 Tigase(但我会说他们知道)。应该仔细查看其他服务器,因为它们似乎没有“动态”社区。​​p>

您将需要大量 javascript,为此,我可以推荐 StropheJS,这可能是当今最好的库。

我们最近在 Superfeedr 创建了一个名为 Aristochat 的 MUC(多用户聊天室)客户端,它可以在浏览器中运行。您可以在 Github 和 example here 上找到代码。

【讨论】:

我已经尝试过了,它工作正常,但问题是客户端总是每隔 n 秒 ping 一次服务器,这是服务器带宽的问题。 你尝试了什么?波什,还是阿里斯托查特?是的,您将可以从任何客户端(无论您使用 bosh、flash 还是其他任何东西......)连接到服务器,因为从本质上讲,聊天是一个“连接”协议。而且我真的不认为带宽会很重要。

以上是关于浏览器上的即时消息的主要内容,如果未能解决你的问题,请参考以下文章

使用PHP+Swoole实现的网页即时聊天工具:PHPWebIM

即时聊天软件的原理,Web网页的聊天又是怎么实现的呢?

Rails 的即时通讯实现?

如何使用 Modernizr 检测对即时滚动事件的支持?

php 加入即时推送功能

Microsoft Office Communicator Automation API 2007 和接收即时消息