Помогите разобраться с веб сокетами.
Задача организовать разные чаты между несколькими пользователями. Например чат команты 1, и чат комнаты 2
Сейчас я реализовал чат на php, но его получают все пользователи. Я реализовал, что бы на стороне клиента определялся чат и если это тот чат, то сообщение отображается у клиента. Но это же не верно. То есть клиент получает весь пакет всех сообщений всех чатов, то есть он находясь в комнате 1 получает сообщение комнаты чата 2, хотя его не видит, так как js фильтрует показывать сообщение в браузере или нет. Дайте направление в какую сторону двигаться. Спасибо
<?php
require_once ("classes/Chat.php");
define('PORT', 8090);
$chat = new Chat();
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
socket_bind($socket, 0, PORT);
socket_listen($socket);
$clientSocketArray = array($socket);
while(true){
sleep(1);
$newSocketArray = $clientSocketArray;
$nullA = [];
socket_select($newSocketArray,$nullA,$nullA,0,10);
if(in_array($socket, $newSocketArray)) {
$newSocket = socket_accept($socket);
$clientSocketArray[] = $newSocket;
$header = socket_read($newSocket, 1024);
$chat->sendHeaders($header, $newSocket, 'domen.ru/chat/index', PORT);
socket_getpeername($newSocket, $client_ip_address);
$connectionACK = $chat->newConnectionACK($client_ip_address);
$chat->send($connectionACK, $clientSocketArray);
$newSocketArrayIndex = array_search($socket, $newSocketArray);
unset($newSocketArray[$newSocketArrayIndex]);
}
foreach ($newSocketArray as $newSocketArrayResourse) {
while (socket_recv($newSocketArrayResourse, $socketData, 1024, 0) >= 1) {
$socketMessage = $chat->unseal($socketData);
$messageObj = json_decode($socketMessage);
if($messageObj->chat_message == null){
}else{
$chatMessage = $chat->createChatMessage($messageObj->chat_user, $messageObj->chat_message, $messageObj->name_chat);
$chat->send($chatMessage, $clientSocketArray);
}
break 2;
}
}
}
socket_close($socket);
?>