首页 > 解决方案 > 如果数据太大,Socket.io 不会发出

问题描述

我已经构建了一个可以发送图像的 webapp。对于小图片,一切正常。但是一旦它变得更大〜1000x1000px,socket.io就不会发出。它甚至没有说明错误。它只是不发送图像。

这就是我的对象的样子:

chatBlock = {
username: "",
message: "",
date: new Date(),
file: null,
imgWidth: 0,
imgHeight: 0,
};

这就是我发送它的方式:

socket.emit('msgSend', chatBlock);

所以实际上非常基本,但是一旦图像(对象中的命名文件)变大,它就不会发送它。

标签: node.jswebsocketsocket.io

解决方案


Socket.io 有消息大小限制:请参阅https://socket.io/docs/v4/server-options/#maxhttpbuffersizemaxHttpBufferSize文档中的选项。您可以增加此限制,但请记住,将图像解析为 JSON 效率不高。从长远来看,考虑单独上传图片 - 一个常见的解决方案是使用 HTTP POST,获取上传的 URL,然后将其发送给收件人。这更复杂,但完全避免了消息大小问题,因为文件上传可以是任何大小,并且仍然以有效的方式流式传输。


推荐阅读