目的:
瀏覽器和服務(wù)端建立websocket長(zhǎng)連接
服務(wù)端同時(shí)作為websocket客戶端跟第三方接口保持長(zhǎng)連接
拿到第三方數(shù)據(jù)后,將結(jié)果 返回給指定的客戶端用戶
envent.php代碼:
class Events
{
public static $connection_to_8989 = null;
public static function onConnect($client_id){
self::$connection_to_8989 = new AsyncTcpConnection("ws://127.0.0.1:8989");
self::$connection_to_8989->onMessage = function($connection_to_8989, $buffer)use($client_id)
{
Gateway::sendToClient($client_id,$client_id." said 【".$buffer."】 from 8787");
};
self::$connection_to_8989->connect();
}
public static function onMessage($client_id, $message){
sleep(mt_rand(1,3));
self::$connection_to_8989->send($message);
}
public static function onClose(){
self::$connection_to_8989->close();
}
}
請(qǐng)問(wèn)這段代碼能實(shí)現(xiàn)我的需求嗎?
感覺有點(diǎn)問(wèn)題,self::$connection_to_8989每次被覆蓋了。
應(yīng)該用一個(gè)數(shù)組存儲(chǔ)所有的$connection_to_8989,onClose的時(shí)候從數(shù)組中刪除對(duì)應(yīng)的$connection_to_8989。
還有一個(gè)疑問(wèn),self::$connection_to_8989[$client_id]->onMessage 這個(gè)客戶端回調(diào)不會(huì)收到其他連接的消息吧???