我有一个ejabberd服务器,并希望为它写一个Web聊天客户端。我已经看过像Candy这样的东西,但是他们对我想要做的事情有点过头了。我只想要一些基本功能,如即时消息,群聊和在线状态。存在问题使用ejabberd,strophe.js,strophe.muc.js和strophe.roster.js
我使用了strophejs-1.0.2的basic.html和basic.js示例文件作为我的基础。我设法连接到我的jabber服务器,加入会议,“尝试发送信息”,离开会议,并发送即时消息给我。大部分工作。
我遇到的问题是当用户登录并加入会议时,它会尝试向该组发送消息但失败。
<message xmlns="jabber:client" from="[email protected]" to="[email protected]/27311205821380711229538600" type="error">
<body>test2</body>
<error code="406" type="modify">
<not-acceptable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"></not-acceptable>
<text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">It is not allowed to send private messages to the conference</text>
</error>
</message>
如果我使用Pidgin登录自己的会议,我可以在会议中看到用户。它的名字旁边有一个图标,里面有一个圆点和一些圆圈。如果我用鼠标右键单击该用户,则表示用户状态为脱机。用户在线时这很奇怪。如果我查看ejabberd的管理控制台,我看到用户在线。我曾尝试手动设置存在这样的用户加入会议之前:
connection.send($pres({type: "Available"}));
这个结果:
<presence xmlns="jabber:client" from="[email protected]/27311205821380711229538600" to="[email protected]/27311205821380711229538600" type="Available"></presence>
仍然是用户有一个状态为脱机。
它在线发送给我的IM在Pidgin中以红色文本显示。普通消息看起来很蓝。我认为这是因为它认为用户是离线的。
我有点卡住了。我想知道是否有人可以帮助我,或者指引我走向正确的方向吗?我首先想弄清楚为什么这个用户看起来不在线下,而且看起来并没有解决问题。
我一直在寻找关于如何查询花名册的文档。我也没有取得太多的成功。我正在寻找一个非常基本的示例,以显示哪些用户在线以及他们的状态,并在有更改时回拨更新。
有人可以帮我吗?
之间聊天? –