当Chrome DevTools不是真的为空时,它会显示一个空白的传出二进制Web套接字框架

时间:2019-05-13 14:50:52

标签: google-chrome websocket

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

去向框架:

outgoing frame

传入帧:

icoming frame

是什么原因导致Chrome无法正确显示输出框架?我可能是在构建Blob吗?

1 个答案:

答案 0 :(得分:0)

这确实是Chrome错误,我的Chromium错误https://crbug.com/962857跟踪了它的进度。

一种解决方法是通过提供ArrayBuffer或类型化的数组有效载荷而不是Blob来发送二进制帧。

将字符串编码为类型数组(Uint8Array)并将其发送的示例如下:

const uint8Array = new TextEncoder().encode('BINARY');
webSocket.send(uint8Array);