Web-socket 适用于约 8KB 的小文件。但是对于 ~50KB 文件,我的连接断开

Posted

技术标签:

【中文标题】Web-socket 适用于约 8KB 的小文件。但是对于 ~50KB 文件,我的连接断开【英文标题】:Web-socket worked for small files of ~8KB. But for ~50KB file, my connection disconnects 【发布时间】:2019-08-26 05:56:54 【问题描述】:

我们在服务器端尝试以下代码。我在发送更多 731276 字节但能够使用 WebSocket 上传 23969 字节的图像时遇到一些问题。

// websocket and http servers
var webSocketServer = require('websocket').server;
var http = require('http');

// list of currently connected clients (users)
var clients = [];

function htmlEntities(str) 
    return str;


var server = http.createServer(function(request, response) 

);
server.listen(webSocketsServerPort, function() );
var wsServer = new webSocketServer(
    httpServer: server
);

// tries to connect to the WebSocket server
wsServer.on('request', function(request) 

    var connection = request.accept(null, request.origin);

    console.log((new Date()) + ' Connection accepted.');

    // user sent some message
    connection.on('message', function(message) 

        if (message.type === 'binary')  // accept only binary

          // broadcast message to all connected clients

            for (var i = 0; i < clients.length; i++) 
                clients[i].send(message.binaryData);
                //clients[i].send(json);
            
        
    );
);

如何将一个客户端的大图发送给多个客户端?

【问题讨论】:

也许 ***.com/a/47808914/5053002 有帮助 - 配置 maxReceivedFrameSizemaxReceivedMessageSize 似乎是您想要做的 【参考方案1】:

请试试这个。这对我有用。

//[MB KB 字节] 10 MB = 10 * 1024 * 1024

var wsServer = new webSocketServer(
            httpServer: server,
            maxReceivedFrameSize: 10 * 1024 * 1024,
            maxReceivedMessageSize: 10 * 1024 * 1024,
            autoAcceptConnections: false
        );

【讨论】:

以上是关于Web-socket 适用于约 8KB 的小文件。但是对于 ~50KB 文件,我的连接断开的主要内容,如果未能解决你的问题,请参考以下文章

使用 react 和 express 建立 web-socket 通信(nginx、docker)

推送通知可以代替 web-socket 吗?

Python 在线程类函数中广播更新的 Web-socket 数据

设计/架构:web-socket 单连接 vs 多连接

web-socket 客户端不会连接到 API

在没有弹簧身份验证的情况下通过 web-socket 多次回复