我看到的解决方案是:
可以参考 https://github.com/dndx/telnet-chat/blob/master/src/chat.lua。
OR 低层基于NGINX, 是没法直接跨请求的。 所以一个客户端连接上来,默认启动了一个Lua coroutine.
你可以在 fork 出另外一个coroutine。 1个 coroutine 写socket, 1个coroutine 读socket.
问题来了, 那如何跨请求那? 现有的解决方式是: 通过第3方。
1. worker 进程内Lua State
2. worker 进程共享内存
3. 其他进程的主动推送,例如 Redis 的PUB模式
在 2018年1月5日星期五 UTC+8下午4:13:30,luke写道:
Hi~
我正在使用openresty 的 stream模块做一些测试,尝试在一个定时器中每隔几秒对所有的 tcp 长连接的 session 进行群发数据,由于定时器
启动后在回调中已经和请求分离,我该如何正确地在回调中获取所有长连接 session 的 cosocket , 然后进行群发呢?
是否可以使用 ngx.shared.DICT 保存 cosocket,然后在定时器回调中遍历呢?
thx.