通过socket_io传递socket.io空间?

我正在使用socket_write来打开websocket并将数据传递给node.js socket.io服务器。 我正在发送一些HTML,如下所示:

 private function openSocketConnection($address = 'localhost', $port = 5600) { $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($socket, $address, $port); return $socket; } $socket = $this->openSocketConnection(); socket_write($socket, $html, strlen($html)); 

这工作得很好,并把我的数据发送到我的node.js socket.io服务器,我这样捕捉它:

socket.on('data', (msg) => {});

但我现在想发送的数据,所以一个特定的房间,而不是一般的socket.io房间。 有没有一种方法可以指定一个房间?

也许当使用socket_create()什么的? 如果可能的话,显然我想阻止在每个socket_write上传递房间名称。

Solutions Collecting From Web of "通过socket_io传递socket.io空间?"

客户端只能将数据发送到服务器本身。 如果要向特定房间内的所有用户发送消息,请创build一条客户端可以发送的消息,告诉服务器代表客户端进行此操作。

 // client-side socket.emit("sendToRoom", {room: "someRoom", data: "Hello"}); 

然后,在服务器上:

 socket.on('sendToRoom', function(msg) { // send to all clients in the room except the socket client socket.broadcast.to(msg.room, msg.data); }); 

如果客户端只在一个房间里,那么你可以让客户端发送消息到当前房间进行广播,并让服务器查找它在哪个房间里。这样,客户端不必每次都发送房间。