通过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
上传递房间名称。
客户端只能将数据发送到服务器本身。 如果要向特定房间内的所有用户发送消息,请创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); });
如果客户端只在一个房间里,那么你可以让客户端发送消息到当前房间进行广播,并让服务器查找它在哪个房间里。这样,客户端不必每次都发送房间。