Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发送有关Websocket连接创建的额外信息_Websocket - Fatal编程技术网

发送有关Websocket连接创建的额外信息

发送有关Websocket连接创建的额外信息,websocket,Websocket,目前我正在处理Websocket,我需要在建立Websocket连接时发送一些数据,如用户id。 我找到了解决方案,比如我们可以在Websocket连接url的末尾发送值 ws:/localhost:10001/websocket/server.php/456 但是他们在代码中使用Node.js。他们阅读了《456》杂志 websocket.upgradeReq.url 没有Node.js怎么办。 它将在http请求的请求URL中发送out值456。 我的疑问是如何在server.php中读

目前我正在处理Websocket,我需要在建立Websocket连接时发送一些数据,如用户id。 我找到了解决方案,比如我们可以在Websocket连接url的末尾发送值

ws:/localhost:10001/websocket/server.php/456
但是他们在代码中使用Node.js。他们阅读了《456》杂志

websocket.upgradeReq.url
没有Node.js怎么办。 它将在http请求的请求URL中发送out值456。 我的疑问是如何在server.php中读取该值。这里server.php通过我的自定义逻辑处理所有客户机请求。我尝试将在server.php中创建的套接字连接分配给当前值参数(456),如


任何人都能给出解决方案吗。提前谢谢

经过很长时间,我终于找到了问题的答案。代码流是

1.当我启动一个新的Websocket连接时,server.php接受该连接并在数组中管理客户端连接

$socket_new = socket_accept($socket); //accept new socket
$clients[] = $socket_new; //add socket to client array
2.并向客户端发送套接字接受消息

@socket_write($socket_new ,$msg,strlen($msg));//$msg in object format
3.当客户端从Websocket服务器接收到消息时,我将客户端id发送到服务器

 ws.onMessage = function(event){
      ws.send(JSON.stringify({message:'clientRegistration',userId: 456}));
 }
4.在server.php中,我编写自定义逻辑来处理所有客户端请求。当服务器收到消息时,代码如下所示

while(socket_recv($changed_socket, $buf, 1024, 0) >= 1)
{
        $received_text = unmask($buf); //unmask data
        $tst_msg = json_decode($received_text); //json decode
        if($tst_msg){
            $message = $tst_msg->message; //message text                
            if($message == 'clientRegistration'){
                $clients[$tst_msg->userId] = $changed_socket;
             }
             //you can add your own code here
         }
}
5.我终于拥有了所有的客户端连接。如果我想将信息发送到客户端“457”,请使用下面的代码

@socket_write($clients[457],$msg,strlen($msg));//$msg in object format
@socket_write($clients[457],$msg,strlen($msg));//$msg in object format