Socket.io 如果数据太大则不发射
Socket.io does not emit if the data is too big
我构建了一个可以发送图像的网络应用程序。对于小图片,一切正常。但是一旦它变大一点~1000x1000px,socket.io 就不会发出。它甚至没有指出错误。它只是不发送图像。
这是我的对象的样子:
chatBlock = {
username: "",
message: "",
date: new Date(),
file: null,
imgWidth: 0,
imgHeight: 0,
};
我就是这样发送的:
socket.emit('msgSend', chatBlock);
所以实际上非常基本,但是一旦图像(对象中的命名文件)变大,它就不会发送它。
Socket.io 有消息大小限制:请参阅 https://socket.io/docs/v4/server-options/#maxhttpbuffersize 文档中的选项 maxHttpBufferSize
。
您可以增加此限制,但请记住,将图像解析为 JSON 效率不高。从长远来看,考虑单独上传图片——一个常见的解决方案是使用 HTTP POST,获取上传的 URL,然后将其发送给收件人。这更复杂,但完全避免了消息大小问题,因为文件上传可以是任何大小并且仍然以有效的方式流式传输。
我构建了一个可以发送图像的网络应用程序。对于小图片,一切正常。但是一旦它变大一点~1000x1000px,socket.io 就不会发出。它甚至没有指出错误。它只是不发送图像。
这是我的对象的样子:
chatBlock = {
username: "",
message: "",
date: new Date(),
file: null,
imgWidth: 0,
imgHeight: 0,
};
我就是这样发送的:
socket.emit('msgSend', chatBlock);
所以实际上非常基本,但是一旦图像(对象中的命名文件)变大,它就不会发送它。
Socket.io 有消息大小限制:请参阅 https://socket.io/docs/v4/server-options/#maxhttpbuffersize 文档中的选项 maxHttpBufferSize
。
您可以增加此限制,但请记住,将图像解析为 JSON 效率不高。从长远来看,考虑单独上传图片——一个常见的解决方案是使用 HTTP POST,获取上传的 URL,然后将其发送给收件人。这更复杂,但完全避免了消息大小问题,因为文件上传可以是任何大小并且仍然以有效的方式流式传输。