Events::onWebSocketConnect

说明:

void Events::onWebSocketConnect(string $client_id, array $data);

(要求Gateway版本>=3.0.8) 如何查看Gateway版本

当客户端连接上gateway完成websocket握手时触发的回调函数。

注意:此回调只有gateway为websocket协议并且gateway没有设置onWebSocketConnect时才有效。

参数

$client_id

client_id固定为20个字符的字符串,用来全局标记一个socket连接,每个客户端连接都会被分配一个全局唯一的client_id。

$data

websocket握手时的http头数据,包含get、server等变量

返回值

无返回值,任何返回值都会被视为无效的

范例

use \GatewayWorker\Lib\Gateway;

class Events
{

    public static function onWebSocketConnect($client_id, $data)
    {
        var_export($data);
        if (!isset($data['get']['token'])) {
             Gateway::closeClient($client_id);
        }
    }
}

客户端连接代码类似:

var ws = new WebSocket('ws://127.0.0.1:7272/?token=kjxdvjkasfh');

服务端终端打印类似:

array (
  'get' => 
  array (
    'token' => 'kjxdvjkasfh',
  ),
  'server' => 
  array (
    'REQUEST_METHOD' => 'GET',
    'REQUEST_URI' => '/?token=kjxdvjkasfh',
    'SERVER_PROTOCOL' => 'HTTP/1.1',
    'HTTP_HOST' => '127.0.0.1:7272',
    'SERVER_NAME' => '127.0.0.1',
    'SERVER_PORT' => '7272',
    'HTTP_CONNECTION' => 'Upgrade',
    'HTTP_PRAGMA' => 'no-cache',
    'HTTP_CACHE_CONTROL' => 'no-cache',
    'HTTP_UPGRADE' => 'websocket',
    'HTTP_ORIGIN' => 'http://127.0.0.1:55151',
    'HTTP_SEC_WEBSOCKET_VERSION' => '13',
    'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36',
    'HTTP_ACCEPT_ENCODING' => 'gzip, deflate, br',
    'HTTP_ACCEPT_LANGUAGE' => 'zh-CN,zh;q=0.9,en;q=0.8',
    'HTTP_COOKIE' => 'lvt_7b1919221=1237y75',
    'HTTP_SEC_WEBSOCKET_KEY' => 'MWXGA2FauwGJ2beehaqZsQ==',
    'HTTP_SEC_WEBSOCKET_EXTENSIONS' => 'permessage-deflate; client_max_window_bits',
    'QUERY_STRING' => 'token=kjxdvjkasfh',
  ),
  'cookie' => 
  array (
    'lvt_7b1919221' => '1237y75'
  ),
)
编辑于2024-04-08 11:41:05 完善本页 +发起讨论
赞助商
QQ交流群 865805921