Мой скрипт nodejs не может отправлять длинные сообщения - PullRequest
0 голосов
/ 04 декабря 2018

Я открыл сервер WebSocket в Nodejs с

var wsServer = new webSocketServer({
    // WebSocket server is tied to a HTTP server. WebSocket request is just
    // an enhanced HTTP request
    httpServer: server,
    //autoAcceptConnections: false
});

И тогда нормально общаться с клиентской стороной (скрипт js браузера), передавая небольшие (1-2 КБ) пакеты.Кроме того, можно принимать пакеты размером 1 МБ на стороне клиента.

Но когда я пытаюсь отправить пакет 71 КБ на стороне клиента, соединение немедленно закрывается без события onerror и каких-либо сообщений об ошибках.Я не понимаю, что там происходит.Знаете ли вы?

Пакеты 56 КБ отправляются нормально со стороны клиента, поэтому я предполагаю, что размер пакета с ошибкой составляет 64 КБ.Я думаю, что где-то есть ограничение.

Вот код, используемый для создания клиента на стороне браузера

var wsconn = new WebSocket('wss://mydomain:11122');

Что я сделал не так?

1 Ответ

0 голосов
/ 06 декабря 2018

Я нашел решение сам.Оказалось, что максимально допустимый размер кадра для отправки на сервер задается не браузером, а самим сервером.В моем случае мне нужно было увеличить это значение (которое по умолчанию равно 65536), используя следующий код:

var wsServer = new webSocketServer({
    httpServer: server,
    maxReceivedFrameSize: 2048000,    // Added this line
    maxReceivedMessageSize: 2048000,    // And this line
});

Таким образом, максимальный размер кадра для моего сервера составляет около 2 Мбайт, что вполне достаточно для моего приложения.

...