在swoole 的回调函数中 比如onOpen onMessage 里面会有 $serv 但是如果在其他地方想给客户端推送消息的时候咋使用呢?
之前是使用$serv->push($fd,$data);
但是如果在其他地方的话serv是不存在的 如何解决这个呢????
在swoole 的回调函数中 比如onOpen onMessage 里面会有 $serv 但是如果在其他地方想给客户端推送消息的时候咋使用呢?
之前是使用$serv->push($fd,$data);
但是如果在其他地方的话serv是不存在的 如何解决这个呢????
其实swoole里面有个onRequest回调,在这个回调当中监听一下就行了。
通过crul请求带参数完成逻辑就行。例如:http://www.demo.com:9501/?param=123456
首先我不知道你说的其他地方在哪儿,具体来说就是代码的组织方式。这个,没有代码我只能瞎猜。
你可能是要在controller中来使用这个server,但是controller可能是被swoole文件通过call_user_func这样的方式调用的。
这样的话,你可以通过传参数的方式,把serv直接当参数传给业务代码;
然后,除此之外,你还可以试试global;
我刚刚也遇到这个场景的问题。
我的设想是,通过在服务端构建一个websocket客户端连接,去请求就好了,业务仍然可以写在onMessage里。
比如我做了一个定时任务的controller,要在定时任务里触发主动推送给某人,这个控制器肯定没有websocket server的方法的,只能通过在controller里构建一个websocket的客户端了。
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答566 阅读✓ 已解决
简单点来说:“其他地方” -》 连接到server -》 $serv->push($fd,$data);
详细点来说:在其他php-fpm的程序里,你需要tcp连接到通过swoole启动的服务,然后找到你要发送的用户($fd),然后再发送