在workerman的application中部署两个项目,其中一个采用gateway方式实现即时聊天功能,另一个采用worker方式实现其他附加业务,现在的问题是:如何从附加业务中向聊天的某个客户端发送消息?
有几种方法,可以参考手册 http://doc3.workerman.net/advanced/push.html
我看过了这份文档了,也是按照第一种方法做的,worker方式的项目中的发送没有问题,但是gateway这边的项目没有看到数据包过来,不知道怎么回事,是不是接收端还要做什么? worker项目Store.php
<?php namespace Config; /** * 存储配置 * 注意生产环境使用$driver = self::DRIVER_MC,具体参考applications/Demo/README.md * @author walkor */ class Store { // 使用文件存储,注意使用文件存储无法支持workerman分布式部署 const DRIVER_FILE = 1; // 使用memcache存储,支持workerman分布式部署 const DRIVER_MC = 2; /* 使用哪种存储驱动 文件存储DRIVER_FILE 或者 memcache存储DRIVER_MC,为了更好的性能请使用DRIVER_MC * 注意: DRIVER_FILE只适合开发环境,生产环境或者压测请使用DRIVER_MC,需要php cli 安装memcache扩展 */ public static $driver = self::DRIVER_FILE; // 如果是memcache存储,则在这里设置memcache的ip端口,注意确保你安装了memcache扩展 public static $gateway = array( '127.0.0.1:22322', ); /* * 如果使用文件存储,默认系统临时目录下 */ public static $storePath = ''; } // 默认系统临时目录下 Store::$storePath = sys_get_temp_dir().'/fdzn-server-push/';
发送代码
Gateway::sendToAll( str_pad($len, 10, '0', STR_PAD_LEFT) . json_encode($lbs_message), array(0=>$clientId) );
按照手册来就可以
有几种方法,可以参考手册
http://doc3.workerman.net/advanced/push.html
我看过了这份文档了,也是按照第一种方法做的,worker方式的项目中的发送没有问题,但是gateway这边的项目没有看到数据包过来,不知道怎么回事,是不是接收端还要做什么?
worker项目Store.php
发送代码
按照手册来就可以