我收到一条看起来像这样的消息...
<message
from='pinza@some.com'
to='tulyar@some.com'
type='groupchat'
xmlns='jabber:message:group_chat_test'>
<body>Here is my message.</body>
</message>
在我的 routes.js 文件中,我试图根据正文内容以外的其他内容来路由消息 - 具体来说,我想根据自定义命名空间来路由它(所以我可以有不同的群聊消息类型,由不同的控制器)所以我试试这个......
bind.query('message[type="groupchat"][xmlns="jabber:message:group_chat_test"]')
.to(SD.Messenger.Room, "groupchat_test");
但是消息进入以太而不是到达 group_chat_test 控制器。我们用 <iq> 做类似的事情,但它似乎不适用于群聊消息。
我错过了什么吗?我应该能够以这种方式查询群聊消息吗?我还有其他方法可以做到吗?
仅供参考,我目前的解决方法是这个黑客......
bind.query('message[type="groupchat"]').to(SD.Messenger.Room, "all_groupchat_msgs");
在 controllers.js 中使用这个
SD.Messenger.Room.prototype.all_groupchat_msgs = function() {
// test the body of the incoming stanza and
// based on it's contents do different things...
};
(使用 Ejabberd、Bosh、Stroph)