gpt4 book ai didi

javascript - 使用 jquery 对连接在 socket.io 中同一房间的所有用户执行相同的操作

转载 作者:行者123 更新时间:2023-11-30 14:40:42 24 4
gpt4 key购买 nike

我正在尝试制作一个类似于 https://www.omegle.com/ 的网站一次一对一的对话。

如果任何连接的用户点击断开连接按钮结束聊天,它必须向两个用户显示一个新聊天 div

但问题是 new chat div 只显示给点击断开连接按钮的用户。

这是我的客户端代码

 $disconnect.click((e) => {
e.preventDefault();
socket.emit('user disconnect', socket.id, (data) => {
if(data){
$messageForm.hide();
$newChat.show();
}
});
});

我不知道如何解决这个问题。请有人帮助我。

提前致谢。

最佳答案

这里的要点是您使用了 emit 回调。但是这个回调只响应源客户端。

所以在这里您可以将客户端处理程序更改为:

socket.partner_id 是您的对话伙伴。

$disconnect.click((e) => {
e.preventDefault();
socket.emit('user disconnect', socket.partner_id, (data) => {
if(data){
console.log('Closed chat room by your self')
$messageForm.hide();
$newChat.show();
}
});
});
socket.on('user disconnect', () => {
console.log('Closed chat room by your partner')
$messageForm.hide();
$newChat.show();
})

你的服务器端:

socket.on('user disconnect', function (partner_id, fn) {
socket.broadcast.to(partner_id).emit('user disconnect');
fn(true);
}))

希望这对您有所帮助。

关于javascript - 使用 jquery 对连接在 socket.io 中同一房间的所有用户执行相同的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49720327/

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