search

Home  >  Q&A  >  body text

html5 - 用 php 写了个 WebSocket 服务端,在 IE 下出现了问题

在火狐运行正常, IE 和 chrome 却出现问题。
IE 下握手成功后, send()信息给服务端,服务端用 socket_write 原样返回信息给 IE 触发不了 onmessage 事件,反而触发了 onclose 事件。这几天一直在为这个问题烦恼。
有大神可以为在下解答吗
chrome的截图
下方的红字是:WebSocket connection to 'ws://127.0.0.1:1199' failed: A server must not mask any frame taht ie send to the client.

百度里找到位和我一样问题的人:
send函数是指socket_send或socket_write吗?如果是$mask参数在哪?

PHPzPHPz2902 days ago272

reply all(2)I'll reply

  • 阿神

    阿神2017-04-10 17:11:54

    IE 下握手成功后, send()信息给服务端, 服务器端可以打印出来这个信息吗?

    建议先chrome上试试,IE上可能略怪,socket可能会被降级成别的方式

    http://stackoverflow.com/questions/16932...

    随便返回个其他的字符串试试看

    reply
    0
  • 黄舟

    黄舟2017-04-10 17:11:54

    现在版本(13)的websocket是会把客户端send()的信息做mask处理,然后传给服务端。所以服务端要是直接echo客户端传来的信息是会显示乱码的。想要正常显示要转换,同样服务端传给客户端的信息根据字数的长度(len<=125,125<len<=65535,len>65535)需要经过不同处理。上面的代码的问题是服务端直接把客户端传来的信息发给客户端,所以才会出现"must not mask"。
    ps:果然英语对程序员来说很重要。

    reply
    0
  • Cancelreply