【问题标题】:socket.io get socket.id from client who emits somethingsocket.io 从发出某些东西的客户端获取 socket.id
【发布时间】:2014-12-04 15:14:47
【问题描述】:

是否可以从发出某些东西的客户端获取 socket.id?

喜欢:

客户端:

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

服务器端:

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

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

我也可以这样解释:

服务器端:

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

但这不起作用。

【问题讨论】:

  • 一旦你将套接字加入到服务器上的一个房间,不是所有来自客户端的消息都“作用域”到那个房间吗?
  • 没有?你可以加入更多房间吗?

标签: node.js sockets


【解决方案1】:

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

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 但是,我看不出这对您有什么帮助 - 如果您加入一个房间并向图书馆为您处理命名空间的房间广播。

【讨论】:

猜你喜欢
  • 2021-10-12
  • 2017-10-31
  • 2012-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
  • 2013-04-13
相关资源
最近更新 更多