According to the spec,任何给定帧的有效负载长度都可以为0.
frame-payload-data ; n*8 bits in
; length, where
; n >= 0
我正在为这个规范构建一个websocket客户端,但是当我向echo.websocket.org发送一个空载荷的帧时,我什么也得不回来。我使用their GUI:
体验了同样的经历这对我来说很麻烦,因为我构建我的客户端的方式有点要求我在发送多帧消息时发送空帧。
这只是Echo Test服务器中的错误吗?大量的服务器实现会丢弃具有空载荷的帧吗?
如果这是Echo Test中的错误,有人知道我可以与他们取得联系吗? KAAZING网站仅为自己的产品提供技术支持联系信息。
答案 0 :(得分:0)
如果您发送的数据帧没有有效负载,则无需回显。这种行为完全正确。但是,也可以使用0有效载荷发回数据帧,这也符合标准。主要问题是,如果通知应用层,则接收到没有有效载荷的数据帧。在大多数实现中可能不是这种情况。
使用TCP,这类似:TCP-Keepalive是具有0有效载荷的数据报。它是由远程TCP堆栈确认的,但应用层是不通知它(即select()不返回或read() - 系统调用仍然阻塞),这是预期的行为。
应用程序层协议不应该依赖数据报来构造数据,而应该仅仅期望一个字节流而不考虑它们是如何传输的。
答案 1 :(得分:0)
我刚刚在websocket.org上尝试使用空负载进行回波测试,并且使用Chrome,Safari和Firefox(每种版本的最新版本)似乎都能正常工作。您使用的是哪种浏览器?
不过,该演示程序并没有遵守任何" echo协议" (afaik),所以没有正式的规范规定如何对WebSocket框架中的空数据做什么。如果您在使用WebSocket时需要帮助,可以使用Kaazing论坛:http://developer.kaazing.com/forums。