cosocket是OpenResty世界中很重要的一个技术,cosocket是依赖Lua协程 + Nginx事件通知两个重要特性拼的。Lua脚本运行在独享的协程之上,可以在需要的时候暂停自己(yield),在条件满足的时候被唤醒(resume)。网络操作时,暂停自己,把网络事件注册到Nginx监听列表中,把cpu让出,运行权限交给Nginx。当有Nginx注册网络事件达到触发条件时,唤醒对应的协程继续处理。
大量的模块都是基于cosocket,例如:
- lua-resty-mysql
- lua-resty-redis
- lua-resty-websocket
- lua-resty-http
- ngx_stream_lua_module
- ……
ngx.socket.tcp的一个例子
|
|
|
|