Передать номер socket.io с помощью socket_write?

Я сейчас пользуюсь socket_write открыть веб-сокет и передать данные на сервер 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 если возможно.

1

Решение

Клиенты могут отправлять данные только на сам сервер. Если вы хотите отправить сообщение всем пользователям в определенной комнате, то создайте сообщение, которое клиент может отправить, которое скажет серверу сделать это от имени клиента.

// 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);
});

Если клиент находится только в одной комнате, вы можете попросить клиента просто отправить сообщение для трансляции в свою текущую комнату, а сервер посмотреть, в какой комнате он находится. Таким образом, клиенту не нужно каждый раз отправлять комнату. ,

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector