开发实时通讯时使用 GatewayWorker 你们是怎么和 mvc 框架结合的?

官网推荐方式:www.workerman.net/doc/gateway-work...

现有 mvc 框架项目与 GatewayWorker 独立部署互不干扰
所有的业务逻辑都由网站页面 post/get 到 mvc 框架中完成
GatewayWorker 不接受客户端发来的数据,即 GatewayWorker 不处理任何业务逻辑,GatewayWorker 仅仅当做一个单向的推送通道
仅当 mvc 框架需要向浏览器主动推送数据时才在 mvc 框架中调用 Gateway 的 API GatewayClient 完成推送。

如果按照这种方案结合,客户端在发送消息时,其实就是在发送的一个 post/get 请求,是否会对发送效率啥的有影响?

大佬们是怎么结合的呢?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 23

我们当时是用来做消息通知,前端不会有消息发到后台 就用了这个模式,如果是 im 类的话感觉中间要经过一层 mvc 的调用 会慢了一点

3年前 评论
Su (楼主) 3年前

我用的这个扩展包 smileymrking/laravel-gateway-worker

仅当 mvc 框架需要向浏览器主动推送数据时才在 mvc 框架中调用 Gateway 的 API GatewayClient 完成推送。

这里是说你的应用程序用 GatewayClient 提供的 API,发送数据给 GatewayWorker,具体发送消息到客户端还是 GatewayWorker 推送消息到客户端吧

3年前 评论
Su (楼主) 3年前
Su (楼主) 3年前
aba66 3年前

用户发送消息走 api,效率影响不大,发送消息可能会做频率、敏感词过滤,走其他渠道(比如:socket)反而更麻烦

3年前 评论

聊天对消息的实时性要求并不高,2,3 秒之内能到就行了

3年前 评论

之前弄过类似的,客户端发消息走 api,服务器接收到消息之后 push 到消息队列 然后消息队列 通过 websocket 推送出去博客:基于 Hyperf 实现 RabbitMQ + WebSocket 消息推送

3年前 评论
Su (楼主) 3年前
ccflow (作者) 3年前
jcc123

games-jumpjump-prod.k8sv2.wpjs.cc/...

做游戏的话可以直接走 GatewayWorker,这样效率会很高

file

这里 games-prod.k8sv2.wpjs.cc/ 做了几个小游戏

3年前 评论
Su (楼主) 3年前
Su (楼主) 3年前

直接封装成一个 command,命令行启动运行

可以参考我们开发的客服系统 modstart.com/m/LiveChat

3年前 评论

官方有一个包直接用就行了: 实现代码也发给你!
workerman/gatewayclient

代码已被折叠,点此展开
3年前 评论
zhanghaidi

workman 不走 mvc 嘛?

3年前 评论

我觉得应该是分别独立部署,把消息推送做成服务的形式,相互不影响,GatewayWorker 专门做消息推送或者是数据处理。相互之间使用 api 接口去通信。
也可以看看 hyperf,集成了 swoole,可以做 socket、web_server 等,它的使用习惯和 laravel 很像,通信就使用 hyperf,其他对外使用 laravel 做 api 接口。

3年前 评论
Su (楼主) 3年前