Автоматическое закрытие 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 такого не происходит.