是否可以从发出内容的客户端获取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);
});
但这不起作用。
答案 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;看看这对你有什么帮助 - 如果你加入一个房间并向房间广播,图书馆正在为你处理命名空间。