使用jquery为socket.io中连接到同一房间的所有用户执行相同的操作

时间:2018-04-08 16:53:32

标签: javascript jquery node.js socket.io

我正在努力建立一个类似https://www.omegle.com/的网站,这是一次一对一的对话。

如果任何关联用户点击断开连接按钮以结束聊天,则必须向两个用户显示new chat div

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

这是我的客户端代码

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

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

Thnx提前。

1 个答案:

答案 0 :(得分:2)

这里的重点是你使用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);
}))

希望得到这个帮助。