在浏览器中使用 xmpp.js 连接到 XMPP 服务器
Posted
技术标签:
【中文标题】在浏览器中使用 xmpp.js 连接到 XMPP 服务器【英文标题】:Connect to XMPP server using xmpp.js in the browser 【发布时间】:2019-05-02 15:34:52 【问题描述】:我正在尝试在浏览器中使用本地 xmpp 服务器运行测试。
import client from '@xmpp/client';
const xmpp = client(
service: 'xmpp://localhost:5222/',
username: 'user',
password: 'pass',
);
xmpp.start().catch(err =>
console.error('start failed', err);
);
但我收到以下错误:
找不到兼容的连接方法。
根据我的阅读,浏览器需要 websocket 连接而不是 xmpp 连接。
xmpp.js
文档说它也支持 websockets,但我不确定我必须更改什么才能成功连接。我必须为我的 XMPP 服务器添加 WS 支持吗?
【问题讨论】:
仅供任何人在使用 Electron 时遇到此问题,该错误意味着您在渲染器进程中运行 XMPP 代码(仅支持 websockets),而它应该在后台进程中(Node 支持 xmpp 和网络套接字)。 【参考方案1】:您很可能必须更改您的service
URI - 协议和端口部分。根据xmpp.js client documentation,您应该使用:
service: 'ws://localhost:5280/xmpp-websocket',
确切的路径可能取决于 xmpp-server(即可能不需要xmpp-websocket
) - 请查看您的服务器文档。
【讨论】:
就是这样,但最后我还是换了 Strophe。 @norbert 如何加载 strophe?当我将 strophe.js 文件复制到我的项目文件夹并运行 echobot 示例时,我收到导入错误。你能给我一个教程或如何设置 strophe 吗?以上是关于在浏览器中使用 xmpp.js 连接到 XMPP 服务器的主要内容,如果未能解决你的问题,请参考以下文章
使用 Strophe js (CONNFAIL) 连接到 Prosody XMPP 服务器
Electron + xmpp.js:如何调试 SSL 自签名错误消息?