gpt4 book ai didi

javascript - 断开 node-xmpp 客户端

转载 作者:搜寻专家 更新时间:2023-11-01 00:33:42 24 4
gpt4 key购买 nike

我正在查看 node-xmppnode-simple-xmpp我正在尝试制作一个简单的客户端。
一切正常,除了断开连接。

我在 example 之后制作了以下文件简单的xmpp:

var xmpp = require('simple-xmpp');

xmpp.on('online', function() {
console.log('Yes, I\'m connected!');
xmpp.send('test2@example.com', 'Hello test');
// OK UNTIL HERE, DISCONNECT NOW
});

xmpp.connect({jid: 'test@example.com/webchat', password: 'test', reconnect: 'false'});

但我不知道如何断开连接。我试图发送一个类型不可用的节:

stanza = new xmpp.Element('presence', {from: 'test@example.com', type: 'unavailable'});
xmpp.conn.send(stanza);
delete xmpp;

这导致客户端暂时离线,但问题是,它会在几秒钟后重新连接并继续发送“存在”节。

我也试过调用 xmpp.conn.end(),它也会断开连接,但之后会报错:

node_modules/simple-xmpp/node_modules/node-xmpp/lib/xmpp/connection.js:100
if (!this.socket.writable) {
^
TypeError: Cannot read property 'writable' of undefined

那么,我做错了什么?我确信有一种简单的方法可以断开连接。

最佳答案

在第一种情况下,<presence type='unavailable'/>并不总是真正断开你的连接;在您的服务器中,它看起来可能是,但您的客户端正在自动重新连接。 delete xmpp实际上并没有导致您的对象被清理,它只是将其从本地 namespace 中删除。

第二种情况send()不会立即将您的节写入底层套接字。如果使用 end() 关闭套接字紧接着,套接字在写入实际发生时关闭。

如果在调用 send() 后添加一个短超时, 在调用 end() 之前它会起作用。为了使它,您需要您的库开发人员在 send() 时给您一个回调。实际上已经写入了套接字。

关于javascript - 断开 node-xmpp 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15175521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com