node.js - 如果数据太大,Socket.io 不会发出
问题描述
我已经构建了一个可以发送图像的 webapp。对于小图片,一切正常。但是一旦它变得更大〜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/#maxhttpbuffersizemaxHttpBufferSize
文档中的选项。您可以增加此限制,但请记住,将图像解析为 JSON 效率不高。从长远来看,考虑单独上传图片 - 一个常见的解决方案是使用 HTTP POST,获取上传的 URL,然后将其发送给收件人。这更复杂,但完全避免了消息大小问题,因为文件上传可以是任何大小,并且仍然以有效的方式流式传输。
推荐阅读
- java - 尝试隐藏视图时的 NPE (BottomNavigationView)
- android - 收到此错误**“错误:无法解决::sinch-android-rtc:+”**
- scala - 无法在 kafka 流上应用 selectKey
- c++ - 动态分配“向量”类的数组
- db2 - 当我正在研究“数据库和 sql dor 数据科学”之一时,我发现了这条消息
- python - 如何获取 github repo 的 sha256 哈希码?
- html - mat-autocomplete 下拉菜单显示在窗口的左上方 [Angular]
- java - 用以特定字母开头的单词制作 ArrayList?
- python - how to use argparser module in python to make a complex command
- javascript - Nodejs无法发帖