我正在使用 Strophe.js 创建自定义 xmpp 聊天应用程序。浏览器和桌面客户端 (Adium) 之间的通信完美运行。我可以通过浏览器向 Adium 发送消息,从 Adium 向浏览器发送消息。在某些时候浏览器-浏览器通信仍然存在问题,因为消息已发送但未传递。看来这只是谷歌浏览器的问题。
有趣的是 <presence> 节可以很好地发送和传递。我们使用 ejabberd 作为服务器守护进程。
这是我从一个帐户发送的存在节:
<presence type="away" xmlns="jabber:client">
<show>away</show>
<status/>
</presence>
以及我收到的其他内容:
<presence xmlns="jabber:client" from="test1@domain.com/3917283126133167196759537" to="test2@domain.com/1563391996133167110798391" type="away">
<show>away</show>
<status/>
</presence>
还有我发送的消息节:
<message from="test1@domain.com/267172122813316722921543" to="test2@domain.com" type="chat" id="4915" xmlns="jabber:client">
<active xmlns="http://jabber.org/protocol/chatstates" />
<body>Testing...</body>
</message>
并且在 Chrome 上没有收到任何内容...
编辑:问题在于转义一些字符。由于安全问题,Chrome 并没有让他们逃脱。