在浏览器中使用 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 自签名错误消息?

xmpp js端跨域请求

在 c# 中使用 SASL ANONYMOUS 连接到 XMPP 服务器

如何在 XMPP/Jabber 中重新连接匿名用户

使用非 digid jid 连接到 facebook throw xmpp