Веб сокет как разграничить чаты

Помогите разобраться с веб сокетами.

Задача организовать разные чаты между несколькими пользователями. Например чат команты 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);

?>

Ответы (0 шт):