在使用stream-lua-nginx-module做tcp server时,使用ngx.req.socket和客户端通信,样例如下:
local /t {
default_type 'text/plain';
content_by_lua '
local sock = ngx.req.socket(true)
local data, err = sock:receive(16)
sock:settimeout(10000)
if err then
ngx.log(log.ERR, err)
else
ngx.log(log.INFO, data)
handle_data(data)
end
';
}
现在的问题是客户端使用的长连接方式,nginx在处理完一次请求后,会主动关闭连接,
这时客户端会再次建立连接,但是没有数据过来,这样会导致nginx调用receive时返回timeout错误。
请问这种方式如何在server端做改进呢?
nginx lua 版本:1.11.2