Chrome DevTools最近获得了预览二进制Web套接字框架的功能:
WebSocket binary message viewer
我决定对其进行测试,因此我构建了一个简单的Web套接字回显测试器和ping Web套接字客户端,令我惊讶的是,我传入的二进制帧工作正常,并且已被开发人员工具预览,但是传出的二进制帧报告长度不正确零字节,不显示任何数据。我知道该帧是正确的,因为服务器只是将其回显,所以如果它损坏了,它将回显不正确的帧。
我的测试客户端代码如下:
const blob = new Blob(['BINARY']);
webSocket.send(blob);
然后服务器将其ping回:
await socket.SendAsync(new ArraySegment<byte>(buffer, 0, result.Count), WebSocketMessageType.Binary, result.EndOfMessage, CancellationToken.None);
您可以看到完整的服务器和客户端实施in my GitHub repository。
去向框架:
传入帧:
是什么原因导致Chrome无法正确显示输出框架?我可能是在构建Blob吗?
答案 0 :(得分:0)
这确实是Chrome错误,我的Chromium错误https://crbug.com/962857跟踪了它的进度。
一种解决方法是通过提供ArrayBuffer
或类型化的数组有效载荷而不是Blob
来发送二进制帧。
将字符串编码为类型数组(Uint8Array
)并将其发送的示例如下:
const uint8Array = new TextEncoder().encode('BINARY');
webSocket.send(uint8Array);