socket.io从发出一些东西的客户端获取socket.id

时间:2014-12-04 15:14:47

标签: node.js sockets

是否可以从发出内容的客户端获取socket.id?

像:

客户机侧:

socket.emit("lol", "data")

服务器端:

socket.on("lol", function(data) {
        // get the socket.id from the client who sended this!!
});

所以,我在多人游戏中制作了一个Tic Tac Toe游戏。我正在使用房间。每个房间有2名球员。但是我需要检测玩家在哪个房间点击了一个字段。

我也可以这样解释:

服务器端:

 player1.on("click", function(data) {
                console.log(data + " in room" + playRoom);   
 });

但这不起作用。

1 个答案:

答案 0 :(得分:0)

我将使用答案格式,但这可能只是方向正确:)如果您想将数据发送到房间,客户端必须指定要发送到哪个房间。例如:

socket.broadcast.to('room').emit('event_name', data);

加入一个房间:

socket.join('room');

这个SO答案有一个很好的方式来展示单个插座如何向多个房间发射(但我没有看到发射器实际订阅了房间):https://stackoverflow.com/a/16475058/1861459

关于客户ID的实际问题 - 我可以通过socket.rooms进行调试,看看你是否能够确定每个房间订阅的具体ID:https://github.com/Automattic/socket.io/wiki/Rooms#rooms-a-client-has-joined但是,我不知道#39;看看这对你有什么帮助 - 如果你加入一个房间并向房间广播,图书馆正在为你处理命名空间。