php swoole 服务端消息推送

<?php
namespace app\index\controller;

class Pay {
  
    public function notice(){
        //想在这里通过websocket通知客户端支付成功 但是无法获取到 $server
    }
} 

swoole 只有在 获取到 $server 的时候才可以使用 $server->push();

但是在想在服务端主动给客户端推送消息的时候没办法获取到 $server 这个咋解决呢?

是需要用到 swoole websocket_client 去连接 websocket_server;
利用 clientserver send 数据 之后server再想客户端推送吗?

阅读 4k
4 个回答

可以获取到server的。
列如:


namespace App\Test\WebSocket;
use One\Swoole\WsController;
class TestController extends WsController
{
    public function notice()
    {
        $this->server->push($this->frame->fd, "消息");
    }
}

你可以试试 one框架 https://github.com/lizhichao/one,在控制器 直接可以通过 $this->server 就能获取

根据题主的描述,数据流是不是 web->websocket->异步处理程序 ,然后希望通过 Yii(swoole)->websocket->web 这样传递数据?

如果是的话,确实需要通过 socket 连接 websocket server,然后由 websocket server 判断要推送给哪个 web client

websocket server存有所有websocket的连接,所以由 websocket server 去判断传数据给哪个用户

对, 就是你自己说的办法, client->server->clients

新手上路,请多包涵

请问 关于swoole 主动发送消息至客户端 client->server 这个怎么实现 websocket客户端异步只能用于cli模式 , fpm如何实现,求大佬 告知啊!!!!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题