看GitHub上的文档,ngx_lua是one-coroutine-per-request isolation design。
但我这边想做一个类似push的项目,希望能够resume其他用户请求协程,同时传值过去。
我不是特别清楚当前版本的Ngx_lua是否可以做到。
或者,我想,用ngx.req.tcp()取得用户请求的cosocket,放到全局的table里(lua_code_cache开启的情况下利用module存储),当发消息的请求过来的时候,可以从这个全局table找到对应的cosocket来下发消息。可惜看了下文档,这个ngx.req.tcp()返回的cosocket是只读的。
另外,如果在当前request里面coroutine.yield(),还是返回一个标准的http response给client了,那我如何挂起用户的请求呢,难道只能ngx.sleep吗?
非常感谢!