常见问题

如何判断连接是否为WebSocket客户端

通过使用$server->connection_info($fd)获取连接信息,返回的数组中有一项为 websocket_status,根据此状态可以判断是否为WebSocket客户端。

  • WEBSOCKET_STATUS_CONNECTION = 1,连接进入等待握手
  • WEBSOCKET_STATUS_HANDSHAKE = 2,正在握手
  • WEBSOCKET_STATUS_FRAME = 3,已握手成功等待浏览器发送数据帧


  • InDataWeTrust

    问个问题,SWOOLE的WebSocket具体支持的是哪个协议?看了WebSocket有好几个RFC看起来,可以指定协议么?

  • xcwenn@qq.com

    同问:>

  • Qesy

    同问

  • 李强

    版本13吧.

  • debugswoole

    $server->connection_info 在on('message')中是null?

  • 古月扌高

    $frame->finish 不是1怎么办

  • 简单的

    怎么报这个 接收request请求的时候Undefined property: swoole_websocket_server::$connection_info

  • finy

    $ws = new swoole_websocket_server("0.0.0.0",9501);

    // 判断当前的请求是否来自websocket客户端 function isWsClient($fd) { global $ws; $info=$ws->connection_info($fd);

    if($info && isset($info["websocket_status"]) && intval($info["websocket_status"])>0)
        return true;
    return false;
    

    }

    代码参考自:http://www.jtthink.com/course/play/1184

  • finy

    我用chrome做ws客户端请求swoole_websocket_server 我如果做不判断请求是否来自websocket客户端,将会报以下错误: PHP Warning: Swoole\WebSocket\Server::push(): the connected client of connection[2] is not a websocket client.