init_by_lua '
local function timer(premature, a, b)
ngx.log(ngx.DEBUG, ngx.localtime())
end
ngx.log(ngx.DEBUG, "create xxx")
local ok, err = ngx.timer.at(1, timer, 1, 1)
--if not ok then
-- ngx.log(ngx.ERR, "failed to create timer: ", err)
-- return
--end
';
这个代码老是报错,不知道为啥,是不是ngx.timer.at不能用在init_by_lua上面呀?还是应该如何做?或者是我的bug?
我现在的项目需要访问第三方服务器,并且需要一直跟那个服务器保持连接,通讯协议里面规定得定时发心跳包来保持。
第三方服务器的响应是异步的,也就是,你send后,会马上给你返回,但是结果不是立即给你的,send的结果,是recv得到的数据,通过ID(send的包里面带的)来标识对应的是哪个send的结果。
我原计划是在init_by_lua里面,开辟两个timer,一个timer负责定时发送心跳包,另外一个timer负责recv结果的,在location里面,导出一个接口,让客户端调用,我拿到客户端的数据后,构造出第三方服务器的数据包发送。
但是现在上面的demo出问题了,不知道该咋搞。求指点
另外,该功能,该咋写比较合适。