如何使用stanza.io客户端和ejabberd服务器在线显示?

时间:2016-08-19 21:33:04

标签: javascript xmpp chat ejabberd stanza.io

我在ejabberd上遇到问题,我正在为客户做一个聊天客户端,我有这部分代码:

client.connect();
client.on('session:started', () => {
    client.getRoster()
    client.sendPresence();
    onConnect();
});

当我开始会话时,我将我的状态发送到服务器以显示" online"对于其他用户,但它不起作用,事件的名称是错误的吗?其他功能工作正常,我可以发送消息,但只能在离线状态。有小费吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

确保您的其他客户也有sent their presence,而另一位用户subscribed即可。

答案 1 :(得分:1)

您需要将您的状态发送到服务器

this.client.on('session:started', () => {
        this.client.enableCarbons(err => {
        if (err) {
            console.log('Server does not support carbons', err);
        }
    });
    this.client.sendPresence();
    });

在保存任何新用户时,我们需要订阅该用户

this.client.subscribe(id);

并且相对用户必须接受订阅,只要他们收到在线状态订阅

this.client.acceptSubscription(id)