GateWayWorker使用AsyncTcpConnection的疑惑

jay

目的:
浏览器和服务端建立websocket长连接
服务端同时作为websocket客户端跟第三方接口保持长连接
拿到第三方数据后,将结果 返回给指定的客户端用户

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();
    }
}

请问这段代码能实现我的需求吗?

2797 1 0
1个回答

keytehu

感觉有点问题,self::$connection_to_8989每次被覆盖了。
应该用一个数组存储所有的$connection_to_8989,onClose的时候从数组中删除对应的$connection_to_8989。

  • jay 2018-05-30

    还有一个疑问,self::$connection_to_8989[$client_id]->onMessage 这个客户端回调不会收到其他连接的消息吧???

年代过于久远,无法发表回答
🔝