wss://192.168.22.188:7272?skey=ssssss

wintrue

如何能在Events.php中获取问号后面的参数,目前获取得到的是空的$_GET。或者可以修改源码实现获取?

2136 3 0
3个回答

yongdao35

之前问过群主,Events.php中获取不到$_GET

  • wintrue 2018-04-28

    可否修改源码自己加上?我看到gateway中是可以获取的

  • yongdao35 2018-04-28

    改源码肯定是能做到的,关键是看个人能力了

maq

$_SERVER 里应该有你想要的东西。

  • maq 2018-04-28

    可以参考 \Workerman\Protocols\Websocket::parseHttpHeader() 的源代码。

  • wintrue 2018-04-28

    我通过gateway放到cache中传递过去了,parseHttpHeader在源码中较深,实现想到不有什么方法可传递

  • wintrue 2018-04-28

    不过好像是异步的,有时设置的cache没收到

  • maq 2018-04-28

    扩展 \GatewayWorker\Gateway,改写 onWorkerConnect,在里面调用 sendToWorker() 给 BusinessWorker 发消息……

walkor

在start_gateway.php加上下面的代码


    $gateway->onConnect = function($connection)
    {
        $connection->onWebSocketConnect = function($connection , $http_header)
        {
            $_SESSION = $_GET;
        };
    };

代码加完后需要重启GatewayWorker。

这样就可以在Events.php中onMessage里通过$_SESSION得到之前的GET数据了。

类似手册http://doc.workerman.net/546067 GatewayWorker从nginx设置的header里获取客户端ip 这个做法

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