Автоматическое закрытие WebSocket-соединения в клиентском приложении на Lua

Использую библиотеку lua-websockets для написания клиентского приложения (код взял из ответа на англоязычном stackoverflow):

local copas     = require'copas'
local websocket = require'websocket'
local json      = require'cjson'

function loop (client)
  while client.state == "OPEN" do
    wait(0)
    local message, opcode = client:receive()
    local replymessage = { command = 'message', message = 'TEST' }
    local ok, err = client:send(json.encode(replymessage))
  end
end

function init ()
  local client = websocket.client.copas ()
  local ok,err = client:connect('ws://localhost:8080')
  local ap_mac = { command = 'subscribe', channel = 'test' }
  ok, err = client:send(json.encode(ap_mac))
  copas.addthread (function ()
    loop (client)
  end)
end

copas.addthread (init)
copas.loop()

Простой WS-сервер написан на nodeJS:

const WebSocket = require('ws');

const WebSocketServer = new WebSocket.Server({
    port: 8080,
    perMessageDeflate: {
        zlibDeflateOptions: {
            chunkSize: 1024,
            memLevel: 7,
            level: 3
        },
        zlibInflateOptions: {
            chunkSize: 10 * 1024
        },
        clientNoContextTakeover: true,
        serverNoContextTakeover: true,
        serverMaxWindowBits: 10,
        concurrencyLimit: 10,
        threshold: 1024
    }
});

WebSocketServer.on('connection', async ws => {
    ws.on('message', async message => {
        console.log(message);
    });

    ws.on('close', async => {
        console.log('closed');
    })
});

Проблема заключается в закрытии соединения сразу после отправки первого сообщения серверу. Серверный вывод:

{"channel":"test","command":"subscribe"}
closed

При подключении с клиентского приложения на JavaScript такого не происходит.


Ответы (0 шт):