duanpendan8067 2017-09-22 12:20
浏览 166

Socket.io/ PHP服务器端

I use socket.io for socket app in my client side. For the server I use socket library of PHP.

After the handsake, the connection was closed and generated a warning

failed: WebSocket is closed before the connection is established.

socket_getsockname($socket_server, $addr, $port); 

while($socket = socket_accept($socket_server)) { 


    $handshake = false;
   if(!$socket){
    print "error 
";
   }
   socket_getpeername($socket, $raddr, $rport); 

   $msg = "Welcome aboard !";
   $length = strlen($msg);

   print socket_read ( $socket , 255 )."
";
   $error = socket_last_error($socket);
   $error_message = socket_strerror($error);

   if(!$handshake){
       $bytes = socket_recv($socket,$buffer,2048,0);
       list($resource,$host,$origin,$key,$key1,$key2,$l8b) = getheaders($buffer);

       $accept = base64_encode(SHA1($key."258EAFA5-E914-47DA-95CA-C5AB0DC85B11", true));

       $upgrade  = "HTTP/1.1 101 WebSocket Protocol Handshake
" .
                   "Upgrade: WebSocket
" .
                   "Connection: Upgrade
" .
                   "Sec-WebSocket-Origin: " . $origin . "
" .
                   "Sec-WebSocket-Location: ws://" . $host . $resource . "
" .
                   "Sec-WebSocket-Accept: " . $accept . "

";

        if(socket_write($socket,$upgrade.chr(0),strlen($upgrade.chr(0)))) {
            $handshake = true;
        }
     }
     else{
          if(socket_write ( $socket , $msg,$length)){
             print "Mesg envoyee 
";
           }
     }

     do{
        $read = socket_read($socket, 1080);
        print $read."
";

        if(socket_write ( $socket , $msg,$length)){
           print "Mesg envoyee 
";
        }
     } while ($read != '');

in my server side in PHP

in my client :

   var socket = io('http://localhost:4454',{
      agent: false,
      transports: ['websocket']
    });
    console.log(socket);
    socket.on('connect', () => {
      socket.send('hi');
      console.log(socket);
    });

    socket.emit('foo');

    socket.on('message', (data) => {
      console.log(data);
      console.log(socket);
    });

    socket.on('data', (data) => {
      console.log(data);
    });

    socket.on('error', (error) => {
      console.log(error);
    });

    //blocage des reconnection si erreurs
    var attemp = 5;
    socket.on('reconnecting', (attemp) => {
      console.log("I'm sad :(");
      //socket.close();
    });

I don't find any solution for this issue. I don't understand why in localhost stream was automatically close. Server side looked fine, in this time...

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
    • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
    • ¥15 谁有desed数据集呀
    • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
    • ¥15 关于#hadoop#的问题
    • ¥15 (标签-Python|关键词-socket)
    • ¥15 keil里为什么main.c定义的函数在it.c调用不了
    • ¥50 切换TabTip键盘的输入法
    • ¥15 可否在不同线程中调用封装数据库操作的类
    • ¥15 微带串馈天线阵列每个阵元宽度计算