setInterval = function(delay, func)
local handler
handler = function (premature)
if premature then return end
local r = func()
if r==true then return end
local ok, err = ngx.timer.at(delay, handler)
if not ok then
ngx.log(ngx.ERR, "failed to create the timer: ", err)
return
end
end
local ok, err = ngx.timer.at(delay, handler)
if not ok then
ngx.log(ngx.ERR, "failed to create the timer: ", err)
return
end
end
local server = require "resty.websocket.server"
local wb, err = server:new{
timeout = 5000,
max_payload_len = 65535
}
if not wb then
ngx.log(ngx.ERR, "failed to new websocket: ", err)
return ngx.exit(444)
end
--在这里创建一个timer给socket发数据
setInterval(2,function()
local bytes, err = wb:send_text("timer....")
--print("timer....")
end)
2014/01/26 17:40:04 [error] 46130#0: *52 [lua] websocket.lua:41: failed to receive frame: nil, client: 127.0.0.1, server: , request: "GET /api/websocket HTTP/1.1", host: "127.0.0.1:8080"
那实际使用中,对于一个简单的2人聊天的例子,两个客户端各连上来,各有一个while true do RECV逻辑在跑,怎么在收到自己客户端发上来的信息时,发给另一个socket呢?