We use lua-resty-websocket
to create websocket server:
https://github.com/openresty/lua-resty-websocket
1 2 3 4 5 | local bytes, err =wb:send_binary(content) if err then ngx.log(ngx.ERR, 'err:'..err) end |
And we see in log file:
1 | 2022/04/26 08:14:40 [error] 525690#525690: *1 [lua] content_by_lua(default:2538):60: err:payload too big, client: 14.111.19.65, server: _, request: "GET /test/ws HTTP/1.1", host: "5.111.72.222" |
Solution: chunk data then send each chunk:
1 2 3 4 5 6 7 8 | function splitByChunk(text, chunkSize) local s = {} chunkSize = chunkSize or 2048 for i=1, #text, chunkSize do s[#s+1] = text:sub(i,i+chunkSize - 1) end return s end |
We use some value of chunkSize
to determine the frame limitation size and we found this value is 1024*64-1 = 65535
1 2 3 4 5 6 7 8 9 | local st9 = splitByChunk(content,1024*32) for j1,j2 in pairs(st9) do local bytes, err = wb:send_binary(j2) if err then ngx.log(ngx.ERR, 'err:'..err) end end |