想问下大神们,为什么连发送消息都要用ajax再去控制器发送,而不是直接ws.send()

梁大胖

截图
如题 官方文档明确写出 GatewayWorker不接受客户端发来的数据,即GatewayWorker不处理任何业务逻辑,GatewayWorker仅仅当做一个单向的推送通道
比如我的A要给B发送一条信息 明明我可以直接ws.send(xxx) 给GatewayWorker 然后再转发给B 官方为何会推荐发一个ajax去控制器里,再到控制器里发送消息呢
这样岂不是增加了步骤?
官方为何这么推荐呢,有点迷惑

2017 1 0
1个回答

walkor

这里讲的是GatewayWorker如何与其它mvc框架结合。
如果业务只是简单的将消息转发可以直接使用GatewayWorker,也就没有必要把其它框架了,直接使用GatewayWorker收发消息是没有问题的。

现实中不仅仅是消息转发这么简单,A给B发消息,一般需要判断A是否有权限给B发,B是否存在,消息数据要存储进数据库以便查看历史消息。这些业务逻辑都需要读写存储的,开发者熟悉mvc框架,在mvc里操作这些很顺手。所以推荐ajax发到mvc框架做这些逻辑,然后mvc框架用gatewayClient调用GatewayWorker推送消息给前端。

  • join1987 2020-03-06

    可不可以在events onmessage中做消息转发 clentid message 调用tp5中其他控制器方法进行消息处理呢
    我用tp5 简单的转发ok 但是一旦调用的控制器继承了think/controller 就会报错 有没有好的解决办法

  • walkor 2020-03-08

    可以

  • join1987 2020-03-08

    @1:弄了两天没搞定 求指教 --我继承了think/controller和使用think/db类都会报错

  • join1987 2020-03-08

    @1: 在event文件中应该如何配置 tp做哪些修改 gatewayworker

年代过于久远,无法发表回答
🔝