Web浏览器无法在Google Chrome上运行

时间:2014-11-07 23:39:24

标签: php google-chrome websocket

我在PHP中有一个绑定到端口并侦听套接字的服务器。我的服务器在PHP脚本中启动:

$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);

当HTTP消息从客户端到达时,服务器会读取标题:

$header = socket_read($socket_new,1024);

然后将连接存储在Memcache存储中。这适用于大多数浏览器,包括safari,firefox和Chrome的Canary。但是,它并不适用于chrome。浏览器抛出错误消息:

  

WebSocket连接到' ws://xyz.com:9001 / chat_server.php'   失败:WebSocket握手期间出错:不正确   '二段的WebSocket-接受'标题值

我的Chrome版本为:版本38.0.2125.111 m(64位)

1 个答案:

答案 0 :(得分:6)

我们遇到了同样的问题,我们可以通过增加socket_read()函数中的“最大字节数”参数来解决它。你可以尝试

socket_tead($socket_new, 2048);

原因是chrome中的websocket标题有时大于1024字节。因此,当您的服务器读取1024个字节时,它不会获得Sec-Websocket-Key参数,也无法生成有效的Sec-Websocket-Accept值。

您也可以使用fsockopen()和fread()代替socket_read()函数。