Я пытаюсь создать веб-сайт с помощью WebSocket (JS + PHP), и я хотел бы получить сокет от отправителя. Например, если клиент «A» отправляет сообщение на мой сервер, как я могу получить сокет от клиента «A». Я искал google, но единственное, что я нашел, это то, что socket_select ждет сообщения и возвращает число сокетов, но я не могу получить сам сокет.Как идентифицировать отправителя из websocket (PHP)
Мой PHP код ниже
<?php
$host = 'localhost'; //host
$port = '9000'; //port
$null = NULL; //null var
//Create TCP/IP sream socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
//reuseable port
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
//bind socket to specified host
socket_bind($socket, 0, $port);
//listen to port
socket_listen($socket);
//create & add listning socket to the list
$sockets = array($socket);
$users = array();
$validActions = array('init');
//start endless loop, so that our script doesn't stop
while (true) {
//manage multipal connections
$changed = $sockets;
//returns the socket resources in $changed array
socket_select($changed, $null, $null, 0, 10);
//check for new socket
if (in_array($socket, $changed)) {
$socket_new = socket_accept($socket); //accept new socket
$sockets[] = $socket_new; //add socket to client array
$header = socket_read($socket_new, 1024); //read data sent by the socket
perform_handshaking($header, $socket_new, $host, $port); //perform websocket handshake
socket_getpeername($socket_new, $ip); //get ip address of connected socket
$response = mask(json_encode(array('type' => 'system', 'message' => $ip . ' connected'))); //prepare json data
send_message($response); //notify all users about new connection
//make room for new socket
$found_socket = array_search($socket, $changed);
unset($changed[$found_socket]);
}
$received_text = unmask($buf); //unmask data
$received_msg = json_decode($received_text); //json decode
//check for any incomming data
while (socket_recv($changed_socket, $buf, 1024, 0) >= 1) {
$received_text = unmask($buf); //unmask data
$tst_msg = json_decode($received_text); //json decode
// I HAVE TO GIVE $socket FROM THE CLIENT TO THE process() FUNCTION
process($received_msg);
... MORE CODE ....
}
}
// close the listening socket
socket_close($sock);
Я обнаружил, что могу получить сокет от клиента при соединении с socket_accept, но после этого есть способ получить сокет от отправителя после этого? – X4V18