我想通过GatewayWorker做一个利用websocket实时推送消息给客户端的功能(类似股票指数的实时更新),我现在是通过在event中写一个 onwebsocketconnect然后利用add方法每两秒推送一次数据,这时我的思路是希望在add里面去调用我在thinkphp里面写的一个公用方法brokerAccount_data()来把数据传给GatewayWorker,然后再由GatewayWorker传给客户端,但是,我现在无法调到我写在thinkphp中的函数。。。还请大神指教,谢谢!
public static function onWebSocketConnect($client_id,$data){
if ($data != 'http://local.gendan5.com'){
Gateway::closeClient($data);
}else{
// $xmlInfo = brokerAccount_data('xm-zero',2,'./cache/xm-zero');
Gateway::sendToClient($client_id,json_encode($data));
\Workerman\Lib\Timer::add(2,function ($client_id,$data){
Gateway::sendToClient($client_id,json_encode($data));
require('http://local.gendan5.com/tp/index.php?s=/Home/GwSendMessage');
// $func = A('Common/function.php');
$xmlInfo = brokerAccount_data('xm-zero',2);
},array($client_id,$data));
}
}
这里是无法调用tp里的公共函数的,你可以把这个函数放在gateway里,或者定义一个类,实例化并调用它
你好,感谢你的解答,我后来想了一个方法,通过使用curl去获取我的这个方法的链接的方式,可以拿到数据了,但是,又出现了一个问题,就是我需要传参到这个方法中,但是我不知道应该怎么才能够把我需要的参数通过前端传到onwebsocketconnect这个方法中来,这个请问应该怎么处理好一点?
public static function onWebSocketConnect($client_id,$data){
if ($data['server']['HTTP_ORIGIN'] != 'http://local.gendan5.com'){
Gateway::closeClient($data['server']['HTTP_ORIGIN']);
}else{
Gateway::sendToClient($client_id,json_encode($data));
\Workerman\Lib\Timer::add(2,function ($client_id,$data){
$url = 'http://local.gendan5.com/tp/index.php/?s=Home/test/test_file_get_contents';
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$xmlInfo = curl_exec($curl);
curl_close($curl);
Gateway::sendToClient($client_id,$xmlInfo);
},array($client_id,$data));
}
我后来想了一个方法,通过使用curl去获取我的这个方法的链接的方式,可以拿到数据了,但是,又出现了一个问题,就是我需要传参到这个方法中,但是我不知道应该怎么才能够把我需要的参数通过前端传到onwebsocketconnect这个方法中来,这个请问应该怎么处理好一点?