我在 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 });
}