不在workerman环境下如果调用WORKERMAN的函数

wulilnxu

如题。比如说不在workerman环境下,如何根据client_id,判断用户是否在线,并且发送消息。

4752 3 1
3个回答

walkor

直接使用GatewayClient即可。
http://workerman.net/gatewaydoc/advanced/push.html

以下回复是针对老版本GatewayWorker的,已经过期了,不再适用当前版本。

其实比较简单,就是要引用到Lib/Gateway.php这个文件

如果两个项目在同一台服务器上
直接引用require /your/path/workerman-xxx/applications/XXX/Lib/Gateway.php 就可以直接调用了

如果是不同机器上调用workerman的接口
也很简单,需要以下步骤
以applications/Demo为例,你只需要将applications/Demo的代码拷贝到你的新项目中任意目录,然后引用新项目中Demo/Lib/Gateway.php即可。
注意:不同服务器上远程调用workerman接口需要开启memcache,在 Config/Store.php 中配置public static $driver = self::DRIVER_MC,并配置memcache服务端的ip和端口

public static $gateway = array(
'192.168.0.1:11211',
);
// 如果还有其它的话
// public static $xxx=array(...

外部项目引用Lib\Gateway.php后就可以直接像下面这样调用

use \Lib\Gateway;
Gateway::sendToClient($client_id, $message);
Gateway::sendToAll($message);
Gateway::isOnline($client_id);
Gateway....

注意 新项目中的Demo/Config 下的配置文件与你的workerman下的applications/Demo/Config要一致

  • 暂无评论
小小晨曦

mark

  • 暂无评论
walkor

直接使用GatewayClient即可。
见手册http://workerman.net/gatewaydoc/advanced/push.html

代码类似:

require_once '/your/path/GatewayClient/Gateway.php';
Gateway::$registerAddress = 'xxx.xxx.xxx.xxx:xx';
Gateway::isOnline($client_id);
Gateway::sendToClient($client_id, $msg);

以上代码可以在任意项目中运行

  • 暂无评论
年代过于久远,无法发表回答
🔝