我使用openfire作为XMPP服务器并使用converse作为客户端库。我想从聊天窗口向openfire发送聊天消息。为此,我想将文本发送到一个反向方法,该方法将消息发送到XMPP服务器。 我正在尝试使用以下内容发送消息:
var msg = converse.env.$msg({
from: 'a1@localhost',
to: 'a6@localhost',
type: 'chat',
body: "Hi"
});
converse.send(msg);
但是这会在websocket的控制台网络中发送以下帧:
来自='a1 @ localhost'的消息= ='a6 @ localhost'type ='chat'body ='嗨'xmlns ='jabber:client'/>
这不会将消息传输给其他用户,也不会将其存储在表中。我非常肯定我称之为错误的功能。任何人都可以提供任何帮助。
答案 0 :(得分:2)
您正在调用正确的功能。
您可能会错过的内容:
“a6 @ localhost”客户端中的消息监听器:正如我在文档中看到的那样功能很少
可能是服务器的正确名称。 “localhost”有问题。您可以 在他自己的网络面板上查看Openfire的真实服务名称
https://conversejs.org/docs/html/development.html
converse.chats.open('buddy@example.com');
converse.chats.get('buddy@example.com');
converse.listen.on('message', function (event, messageXML) { ... });
答案 1 :(得分:1)
语法错误。 conversejs使用strophe插件构造和发送消息。它公开了用于构造节的strophe $ msg消息构建器。它必须采用以下格式:
converse.env.$msg({from: 'a1@localhost', to: 'a6@localhost', type: 'chat'}).c('body').t('Hi');
您需要添加一个正文节点,并在其中添加消息的文本节点。
您还可以创建和添加自己的api方法,并在内部创建一个发送自定义节的方法,并使用api公开它。