local server = require "resty.websocket.server"
local redis = require "resty.redis"
local ws, err = server:new {
timeout = 6000000,
max_payload_len = 65535
}
local red2 = redis:new()
red2:set_timeout(6000000)
red2:connect("127.0.0.1", 6379)
local keys = {"dog", "cat"}
local res, err = red2:subscribe(keys)
if not res then
ngx.log(ngx.ERR, err)
end
ngx.log(ngx.INFO, "waiting for reply")
local res, err = red2:read_reply()
if not res then
ngx.log(ngx.ERR, err)
end
print(res[3])
local res, err = ws:send_close()
ngx.log(ngx.INFO, "closing")
if not res then
ngx.log(ngx.ERR, err)
end
res, err = red2:unsubscribe(keys)
if not res then
ngx.log(ngx.ERR, err)
end
red2:set_keepalive(2000, 100)
ngx.exit(444)
值得注意的是,subscribe的行为并未报错
但这个时候我在redis-cli使用PUBLISH cat "abcdefg"的时候,明显可以观察到read_reply并未返回。而redis这边给出的pub返回值也是0,意味着并未有人sub过cat这个key。
所以这是个bug嘛?