在实际使用中,openresty作为长连接客户端,去连接另一个服务器时,使用ngx.socket.tcp,connect后出来一个sock:
1、发现在ngx定时器(ngx.timer.at)中,调用sock:send会莫名其妙报 bad request的异常,调用不成功,直接挂掉
2022/03/14 16:27:40 [error] 16112#19468: *4 lua entry thread aborted: runtime error: ./app\libs\mmm_socket.lua:132: bad request
stack traceback:
coroutine 0:
[C]: in function 'send'
./app\libs\mmm_socket.lua:132: in function 'send_pack'
./app\libs\mmm_socket.lua:112: in function 'rpc_send'
./\/app/mmm_socket_client.lua:51: in function <./\/app/mmm_socket_client.lua:46>, context: ngx.timer
2、后来经过多次尝试,发现只有在主进程或者是ngx.thread.spawn出来的协程中调用才正常。
3、在ngx.timer.at中,sock展示出来的数据都是正常的,就是一调用send就挂。不知道怎么回事。