gpt4 book ai didi

javascript - 无法在 socket.io 中广播用户断开连接

转载 作者:行者123 更新时间:2023-12-03 03:40:51 25 4
gpt4 key购买 nike

我是socket.io 和nodejs 的新手。我一直在编写一个井字游戏,但我遇到了一个问题,我的目的是如果有人刷新页面或关闭浏览器,让他/她的对手知道。我知道我应该通过断开连接事件来执行此操作,这就是我尝试的方法,但它不起作用。

服务器端

socket.on('disconnect', function() {
socket.emit('user:disconnect');
});

客户端

socket.on('user:disconnect', function() {
var message = player.getPlayerName() + ' leaves';
socket.emit('gameEnded', {room: this.getRoomId(), message: message,id:player.getPlayerId(),gameid: this.getGameId(),winType:"leave"});
});

另外,我需要知道如何获取断开连接的用户的房间。我已经看到了this但我只想将用户发送到一个房间,而不是整个应用程序中的所有用户。

最佳答案

服务器.js

socket.on('disconnect', function() {
socket.emit('user:disconnect');
});

在上面的代码中,如果名为“xxx”的用户断开连接,服务器将向同一用户发出“user:disconnect”。您必须找到其他玩家的套接字连接并向该客户端发出事件。

您可以通过将两个客户端加入一个房间并向房间中的其他用户发送消息来实现您的目标。

socket.join('room1');

io.sockets.in('room1').emit('user:disconnect');

否则,您必须存储下面提到的所有客户端,并使用以下代码将消息发送到特定客户端。

var users = {
'client1': [socket object],
'client2': [socket object],
'client3': [socket object]
}

users['client3'].emit('user:disconnect')

关于javascript - 无法在 socket.io 中广播用户断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45637378/

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