【问题标题】:Socket.io does not emit if the data is too big如果数据太大,Socket.io 不会发出
【发布时间】:2021-05-01 17:33:58
【问题描述】:

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

这就是我的对象的样子:

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

这就是我发送它的方式:

socket.emit('msgSend', chatBlock);

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

【问题讨论】:

    标签: node.js websocket socket.io


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 2020-09-04
    相关资源
    最近更新 更多