关于data, err, partial = tcpsock:receive(pattern?)中,err=closed的问题

30 views
Skip to first unread message

小镇错题家

unread,
Jun 5, 2023, 11:29:43 PM6/5/23
to openresty
我的代码逻辑是这样,需要从body中提取每一行数据,但是无法判断数据是否以及接收完毕。最后一次接收时err=closed,这可以表示数据接收完毕了吗?关于err=closed有文档定义吗,其他err错误还有什么呢?官网上没有查到相关资料,恳请回复
```
content_by_lua_block {
             local socket, err = ngx.req.socket()
             local ret = ''
             while true do
                local buf, err_msg, partial = socket:receive('*l')
                ngx.log(ngx.ERR, buf)
                ngx.log(ngx.ERR, err_msg)
                if err_msg then
                     break
                end
                ret = ret .. buf
             end
             ngx.say(ret)
         }
```
日志
```
2023/06/06 11:21:19 [error] 18724#0: *55 [lua] content_by_lua(nginx.conf:44):6: hello, client: 172.19.124.56, server: , request: "POST /t HTTP/1.1", host: "172.18.2.33:8081"
2023/06/06 11:21:19 [error] 18724#0: *55 [lua] content_by_lua(nginx.conf:44):7: nil, client: 172.19.124.56, server: , request: "POST /t HTTP/1.1", host: "172.18.2.33:8081"
2023/06/06 11:21:19 [error] 18724#0: *55 [lua] content_by_lua(nginx.conf:44):6:  world, client: 172.19.124.56, server: , request: "POST /t HTTP/1.1", host: "172.18.2.33:8081"
2023/06/06 11:21:19 [error] 18724#0: *55 [lua] content_by_lua(nginx.conf:44):7: nil, client: 172.19.124.56, server: , request: "POST /t HTTP/1.1", host: "172.18.2.33:8081"
2023/06/06 11:21:19 [error] 18724#0: *55 [lua] content_by_lua(nginx.conf:44):6: nil, client: 172.19.124.56, server: , request: "POST /t HTTP/1.1", host: "172.18.2.33:8081"
2023/06/06 11:21:19 [error] 18724#0: *55 [lua] content_by_lua(nginx.conf:44):7: closed, client: 172.19.124.56, server: , request: "POST /t HTTP/1.1", host: "172.18.2.33:8081"
```


xue

unread,
Jun 6, 2023, 6:26:07 AM6/6/23
to openresty
In case of success, it returns the data received; in case of error, it returns nil with a string describing the error and the partial data received so far.
Reply all
Reply to author
Forward
0 new messages