一个websocket连接到nginx这里,我起一个receive客户端的轻线程和一个从后端读取数据send给客户端的轻线程。当client断开连接之后,我想要捕获到这个信息,然后做一些操作。现在就是加了websocket server这一块代码在主线程之后,一直捕获不到client断开连接的信息。
location /t {
lua_check_client_abort on;
access_by_lua '
local ok, err = ngx.on_abort(function ()
ngx.log(ngx.ERR, "on abort called")
ngx.exit(499)
end)
if not ok then
ngx.log(ngx.ERR, "cannot set on_abort: " .. err)
end
local server = require "resty.websocket.server"
local wb, err = server:new{
timeout = 5000, -- in milliseconds
max_payload_len = 65535,
}
if not wb then
ngx.log(ngx.ERR, "failed to new websocket: ", err)
return ngx.exit(444)
end
--ngx.sleep(10)
ngx.thread.spawn(websocket_receive_fun, wb)
ngx.thread.spawn(websocket_send_fun, wb)
';
content_by_lua return;
}