alberliu / gim

golang写的IM服务器(服务组件形式)
MIT License
2.57k stars 525 forks source link

WebSocket 是否无法实现 Reactor 模型? #133

Closed callmePicacho closed 1 year ago

callmePicacho commented 1 year ago

请教大佬! 在 TCP 的连接管理,大佬使用 epoll 进行连接管理,当有事件发送,再分配执行对应的 HandlerMessage 函数; 而在 WebSocket 的连接管理中,连接建立时,直接启动两个协程进行读写数据处理 问题:

  1. 由于 WebSocket 借道 HTTP 协议,Web 框架(或者更底层,比如 HTTP 下层 TCP 的连接入口处?)已经有地方做了 Reactor 监听和分发事件的职责,执行 Handler 路由方法时,不可能再在 Handler 路由方法中做监听和发放
  2. TCP 连接之所以能使用 Reactor 模型,是由于直接调用系统函数,在连接进入应用层的入口就接管了,所以可以从它这进行 Reactor 监听和分发事件

是我理解的这个意思吗?

alberliu commented 1 year ago

理解没问题