首先,我使用以下脚本连接到Openfire。
const {Client} = require('@xmpp/client')
const client = new Client()
client.start('xmpp://localhost:5222').catch(err => {
console.error('start failed', err)
})
client.handle('authenticate', authenticate => {
return authenticate('gabbar', 'gabbar@123')
})
但是它显示了一个错误'require is not defined'。所以我搜索了互联网,发现 browserify 可以完成我的工作。所以我使用HTML页面的index.js创建了 bundle.js 文件,并将其包含在HTML页面中。
<head>
<meta charset="UTF-8"/>
<title>xmpp.js example</title>
<script src="bundle.js"></script>
<!-- <script src="index.js"></script>-->
</head>
然后我收到了错误
找不到兼容的连接方法
是否有人可以告诉其他任何方式。我也尝试了与xmpp.js client包的示例目录中给出的相同,但是这给了我一个错误,就像XMPP不是一个函数。以下是我查看示例文件后编写的代码。
index.js
const {xmpp, xml} =
typeof require === 'undefined' ? window.xmpp : require('@xmpp/client') // For you; require('@xmpp/client')
const {client} = xmpp()
client.start('xmpp://localhost:5222').catch(err => {
console.error('start failed', err)
})
client.handle('authenticate', authenticate => {
return authenticate('gabbar', 'gabbar@123')
})
sample.html
<head>
<meta charset="UTF-8"/>
<title>xmpp.js example</title>
<script src="node_modules/xmpp.js/dist/xmpp.min.js"></script>
<script src="index.js"></script>
</head>
这些是我尝试从浏览器端连接到openfire的两种方式,但它们都不适用于我。请问,任何人都可以告诉我我做错了什么或者其他可能更好的方法吗?
答案 0 :(得分:0)
xmpp://
。浏览器仅支持 ws://
(websockets)。如果服务器支持 websockets,你会做这样的事情:
client.start('ws://domain:port)
或 client.start('ws://domain:port/xmpp-websockets)
另一种选择是不在浏览器中使用 Node。这可以通过在没有浏览器的情况下自行运行 node 或在 Electron 的后台进程中运行该代码来实现(与单独运行 node 相同,但您可以与渲染器进程通信以与 UI 交互)