最近在使用openresty udp , 之前用过tcp的socket,tcp的socket 在
local pack_buf, err = sock:receive() -- 这个时候,tcp的socket是阻塞的,有数据才会往下走
但是....测试了各种方法,发现udp的receive是真的nonbloking的, 他接受到一次客户端发送的数据后,在此调用,就会不停的反馈 no more data,
但是目前我想使用udp 做服务器端主动发送给客户端的功能,所以udp 接收到的请求后, nginx.conf配置如下
stream {
udp测试
server {
listen 10801 udp;
content_by_lua_block {
local _sock, err = ngx.req.socket(true)
local pack_buf, err = self.sock:receive()
_sock:send('ddddd')
}
}
在这种每次请求,都只能是一个新的sock来处理, 服务器就没办法主动发数据给客户端
求大神指教,有什么办法可以复用这个sock和客户端通信,或者是openresty压根没法支持这种用法啊?