在workerman的application中部署兩個(gè)項(xiàng)目,其中一個(gè)采用gateway方式實(shí)現(xiàn)即時(shí)聊天功能,另一個(gè)采用worker方式實(shí)現(xiàn)其他附加業(yè)務(wù),現(xiàn)在的問(wèn)題是:如何從附加業(yè)務(wù)中向聊天的某個(gè)客戶端發(fā)送消息?
我看過(guò)了這份文檔了,也是按照第一種方法做的,worker方式的項(xiàng)目中的發(fā)送沒有問(wèn)題,但是gateway這邊的項(xiàng)目沒有看到數(shù)據(jù)包過(guò)來(lái),不知道怎么回事,是不是接收端還要做什么?
worker項(xiàng)目Store.php
<?php
namespace Config;
/**
* 存儲(chǔ)配置
* 注意生產(chǎn)環(huán)境使用$driver = self::DRIVER_MC,具體參考applications/Demo/README.md
* @author walkor
*/
class Store
{
// 使用文件存儲(chǔ),注意使用文件存儲(chǔ)無(wú)法支持workerman分布式部署
const DRIVER_FILE = 1;
// 使用memcache存儲(chǔ),支持workerman分布式部署
const DRIVER_MC = 2;
/* 使用哪種存儲(chǔ)驅(qū)動(dòng) 文件存儲(chǔ)DRIVER_FILE 或者 memcache存儲(chǔ)DRIVER_MC,為了更好的性能請(qǐng)使用DRIVER_MC
* 注意: DRIVER_FILE只適合開發(fā)環(huán)境,生產(chǎn)環(huán)境或者壓測(cè)請(qǐng)使用DRIVER_MC,需要php cli 安裝memcache擴(kuò)展
*/
public static $driver = self::DRIVER_FILE;
// 如果是memcache存儲(chǔ),則在這里設(shè)置memcache的ip端口,注意確保你安裝了memcache擴(kuò)展
public static $gateway = array(
'127.0.0.1:22322',
);
/*
* 如果使用文件存儲(chǔ),默認(rèn)系統(tǒng)臨時(shí)目錄下
*/
public static $storePath = '';
}
// 默認(rèn)系統(tǒng)臨時(shí)目錄下
Store::$storePath = sys_get_temp_dir().'/fdzn-server-push/';
發(fā)送代碼
Gateway::sendToAll( str_pad($len, 10, '0', STR_PAD_LEFT) . json_encode($lbs_message), array(0=>$clientId) );