如何使用 stanza.io 客户端和 ejabberd 服务器在线显示?
Posted
技术标签:
【中文标题】如何使用 stanza.io 客户端和 ejabberd 服务器在线显示?【英文标题】:How to appear online using stanza.io client and ejabberd server? 【发布时间】:2016-08-19 21:33:03 【问题描述】:我在 ejabberd 上出现在线时遇到问题,我正在为客户做一个聊天客户端,我有这部分代码:
client.connect();
client.on('session:started', () =>
client.getRoster()
client.sendPresence();
onConnect();
);
当我获得会话开始事件时,我将我的状态发送到服务器以向其他用户显示“在线”,但它不起作用,事件名称是否错误?其他功能工作正常我可以发送消息,但只能在离线状态。有小费吗?提前致谢。
【问题讨论】:
【参考方案1】:确保您的其他客户也有sent their presence,并且您的其他用户是subscribed。
【讨论】:
我正在使用 psi 与客户端进行调试,如果我理解正确,我需要订阅以查看用户是否在线,即使客户端发送存在?我会尝试订阅看看会发生什么【参考方案2】:您需要将您的存在发送到服务器
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)
【讨论】:
我们也可以同时发送订阅和接受订阅 是的...我们也可以这样做以上是关于如何使用 stanza.io 客户端和 ejabberd 服务器在线显示?的主要内容,如果未能解决你的问题,请参考以下文章