创建多个 Jabber Client Echo Bot
Create Multiple Jabber Client Echo Bot
Hai Whosebugers,
我已经尝试了很多方法来解决我的问题,但我最终还是遇到了堆栈溢出问题
编程语言:
打字稿
我的主要目标:
创建我想要的客户端 Class 并且可以打开和关闭客户端,客户端将作为 Bot 从好友列表回显文本
我使用 node-xmpp-client 库:
https://github.com/chris-rock/node-xmpp-client
我的代码:
import * as Client from 'node-xmpp-client'; // Jabber Helper
export class TerminalJabber {
private ter;
private client;
constructor(ter: any) {
this.ter = ter;
this.client = new Client({
jid: this.ter.settings.username,
password: this.ter.settings.password,
});
}
public turnOn(){
// Turn on Jabber
this.client.on('online', () => {
console.log('online');
const stanza = new Client.Element('presence', { })
.c('show').t('chat').up()
.c('status').t('Happily echoing your <message/> stanzas');
this.client.send(stanza);
});
this.client.on('stanza', (stanza) => {
// Message come here and will echo from here
});
// Catch error
this.client.on('error', (e) => {
console.log('------>', e);
});
}
// Turn Off Jabber
public turnOff () {
// Turn Off Jabber
this.client.end();
return true;
}
}
问题是, 机器人可以启动,但是当我调用新的 class 和 turnOn()[= 时永远不会断开连接40=] 和 turnOff()。
我如何调用我的代码:
// 命中 URL
/turnOn/:terId
// Hit URL
app.router.get(/turnOn/:id, turnOnController); // for turn On
app.router.get(/turnOff/:id, turnOfController); // for turn Off
TurnOnController(){
// Get data from database using id
const data = Query ~ ;
const terminal = new TerminalId(data)
terminal.turnOn();
}
TurnOffController(){
// Get data from database using id
const data = Query ~ ;
const terminal = new TerminalID(data)
terminal.turnOff();
}
也许你能解决我的问题?
一直在思考并阅读了很多关于 xmpp 的文章 post,但我无法解决这个问题,
请帮忙
真诚的,
谢谢
在创建新实例之前,您需要在 terminal
实例上调用 turnOff 方法。
这也意味着您需要从两个控制器访问实例。
var terminals = {};
function turnOnController(){
var id = getIdSomehow();
terminal[id] = new TerminalId(data);
terminal[id].turnOn();
}
function turnOffController(){
var id = getIdSomehow();
if (terminal[id])
terminal[id].turnOff();
}
Hai Whosebugers, 我已经尝试了很多方法来解决我的问题,但我最终还是遇到了堆栈溢出问题
编程语言: 打字稿
我的主要目标: 创建我想要的客户端 Class 并且可以打开和关闭客户端,客户端将作为 Bot 从好友列表回显文本
我使用 node-xmpp-client 库: https://github.com/chris-rock/node-xmpp-client
我的代码:
import * as Client from 'node-xmpp-client'; // Jabber Helper
export class TerminalJabber {
private ter;
private client;
constructor(ter: any) {
this.ter = ter;
this.client = new Client({
jid: this.ter.settings.username,
password: this.ter.settings.password,
});
}
public turnOn(){
// Turn on Jabber
this.client.on('online', () => {
console.log('online');
const stanza = new Client.Element('presence', { })
.c('show').t('chat').up()
.c('status').t('Happily echoing your <message/> stanzas');
this.client.send(stanza);
});
this.client.on('stanza', (stanza) => {
// Message come here and will echo from here
});
// Catch error
this.client.on('error', (e) => {
console.log('------>', e);
});
}
// Turn Off Jabber
public turnOff () {
// Turn Off Jabber
this.client.end();
return true;
}
}
问题是, 机器人可以启动,但是当我调用新的 class 和 turnOn()[= 时永远不会断开连接40=] 和 turnOff()。
我如何调用我的代码: // 命中 URL /turnOn/:terId
// Hit URL
app.router.get(/turnOn/:id, turnOnController); // for turn On
app.router.get(/turnOff/:id, turnOfController); // for turn Off
TurnOnController(){
// Get data from database using id
const data = Query ~ ;
const terminal = new TerminalId(data)
terminal.turnOn();
}
TurnOffController(){
// Get data from database using id
const data = Query ~ ;
const terminal = new TerminalID(data)
terminal.turnOff();
}
也许你能解决我的问题? 一直在思考并阅读了很多关于 xmpp 的文章 post,但我无法解决这个问题,
请帮忙
真诚的, 谢谢
在创建新实例之前,您需要在 terminal
实例上调用 turnOff 方法。
这也意味着您需要从两个控制器访问实例。
var terminals = {};
function turnOnController(){
var id = getIdSomehow();
terminal[id] = new TerminalId(data);
terminal[id].turnOn();
}
function turnOffController(){
var id = getIdSomehow();
if (terminal[id])
terminal[id].turnOff();
}