无法通过WebSockets在Chrome中发送长缓冲区

时间:2014-09-01 11:01:57

标签: javascript google-chrome firefox websocket

我尝试将640 * 480画布的内容发送到WebSocket服务器。

Javascript相关部分在这里:

    // Get the image data
    var imageData = tCtx.getImageData (0, 0, 640, 480);
    var buf = imageData.data;
    var limit = buf.byteLength / 4;
    var buffer = new Uint8ClampedArray(921600);

    for (var i = 0; i < limit; ++i) {
        var originOffset = 4 * i;
        var targetOffset = 3 * i;

        buffer[targetOffset] = buf[originOffset + 2];
        buffer[targetOffset + 1] = buf[originOffset + 1];
        buffer[targetOffset + 2] = buf[originOffset];
    }

    // Send the data
    ws.send (buffer);

for循环只是将RGBA格式从画布转换为BGR,以便用OpenCV显示图片。

在Firefox上它可以工作,在我的服务器上我收到了921600个字节(我使用了libwebsockets),我甚至可以用OpenCV显示图片。 但是在Chrome上,当我尝试发送这些数据时,服务器没有收到字节,WebSocket连接也会关闭。

我尝试在发送之前对缓冲区进行切片,然后我发现我可以通过Chrome发送的最大值大约为65000字节:即当我尝试70000时,它无法正常工作。

知道为什么吗?我能做些什么吗?我是否必须手动切片缓冲区并分批发送部件?我以为WebSockets应该照顾它? 在此先感谢: - )

0 个答案:

没有答案