1

我在 Rails 6 服务器上运行 AnyCable/Actioncable,当尝试通过 websocket 从浏览器向服务器发送二进制(uint8Array)数据时,发送二进制数据,并可能在上传完成之前终止上传。

uint8array 是使用 FileReader() 转换为 uint8array 的小 jpg,Chrome 开发工具称该数组的大小约为 12mb。

我认为每 3 秒从服务器收到的 ping 消息被数据上传中断,因此客户端在未按时收到 ping 消息时会尝试重置连接。

这是准确的还是可能是别的?

我在 React 中使用 actioncable NPM 包通过套接字进行通信,如下所示:

let reader = new FileReader();
reader.onload = function(event) {
  let arrayBuffer = this.result;
  let uint8Array  = new Uint8Array(arrayBuffer);
  console.log(uint8Array)
  socket.binaryType = "arraybuffer"
  socket.send(uint8Array);
};
reader.readAsArrayBuffer(blob);

send(paste) {
  const pasteParams = {
  command: "message",
  action: "create",
  data: {
    content: paste,
    content_type: "arraybuffer",
    device: "nexus6p"
  }
};
this.consumer.send(pasteParams, { binary: true, mask: true });

}

4

0 回答 0