Closed gsy071925 closed 3 years ago
基于openresty搭建一个简易网关,通过websocket从网关后台(springboot工程)拉取配置数据,即openresty这里的websocket为客户端; 下面是openresty websocket的部分伪代码逻辑: local config = { max_payload_len=1024000, url="ws://..." } local client = require "resty.websocket.client" local wb, err = client:new({ max_payload_len = config.max_payload_len, send_unmasked = false, timeout = 300000 }) local ok, err = wb:connect(config.url) local data, typ, err = wb:recv_frame() ngx.log(ngx.ERR, "receive type: ".. typ .. ", data len:" .. string.len(data))
下面是日志的打印(data的长度只有32768):
2021/02/18 15:30:46 [error] 13054#0: *9 [lua] ws_client.lua:116: receive type: text, data len:32768, context: ngx.timer
因为数据帧的数据不完全,导致了问题; 用java模拟websocket client,从上述的网关后台可以拉取到完整的数据,排除后台的问题。
目前不知道,除了max_payload_len,openresty还有哪里可以限制这个帧的大小~
The second return value is always the frame type, which could be one of continuation, text, binary, close, ping, pong, or nil (for unknown types). 仔细试了下,这里的continuation才是最后一个帧的结束类型,以为text是。
基于openresty搭建一个简易网关,通过websocket从网关后台(springboot工程)拉取配置数据,即openresty这里的websocket为客户端; 下面是openresty websocket的部分伪代码逻辑: local config = { max_payload_len=1024000, url="ws://..." } local client = require "resty.websocket.client" local wb, err = client:new({ max_payload_len = config.max_payload_len, send_unmasked = false, timeout = 300000 }) local ok, err = wb:connect(config.url) local data, typ, err = wb:recv_frame() ngx.log(ngx.ERR, "receive type: ".. typ .. ", data len:" .. string.len(data))
下面是日志的打印(data的长度只有32768):
因为数据帧的数据不完全,导致了问题; 用java模拟websocket client,从上述的网关后台可以拉取到完整的数据,排除后台的问题。
目前不知道,除了max_payload_len,openresty还有哪里可以限制这个帧的大小~