Events::onWebSocketConnect

说明:

  1. 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等变量

返回值

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

onConnect范例

  1. use \GatewayWorker\Lib\Gateway;
  2. class Events
  3. {
  4. public static function onWebSocketConnect($client_id, $data)
  5. {
  6. var_export($data);
  7. if (!isset($data['get']['token'])) {
  8. Gateway::closeClient($client_id);
  9. }
  10. }
  11. }

客户端连接代码类似:

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

服务端终端打印类似:

  1. array (
  2. 'get' =>
  3. array (
  4. 'token' => 'kjxdvjkasfh',
  5. ),
  6. 'server' =>
  7. array (
  8. 'REQUEST_METHOD' => 'GET',
  9. 'REQUEST_URI' => '/?token=kjxdvjkasfh',
  10. 'SERVER_PROTOCOL' => 'HTTP/1.1',
  11. 'HTTP_HOST' => '127.0.0.1:7272',
  12. 'SERVER_NAME' => '127.0.0.1',
  13. 'SERVER_PORT' => '7272',
  14. 'HTTP_CONNECTION' => 'Upgrade',
  15. 'HTTP_PRAGMA' => 'no-cache',
  16. 'HTTP_CACHE_CONTROL' => 'no-cache',
  17. 'HTTP_UPGRADE' => 'websocket',
  18. 'HTTP_ORIGIN' => 'http://127.0.0.1:55151',
  19. 'HTTP_SEC_WEBSOCKET_VERSION' => '13',
  20. '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',
  21. 'HTTP_ACCEPT_ENCODING' => 'gzip, deflate, br',
  22. 'HTTP_ACCEPT_LANGUAGE' => 'zh-CN,zh;q=0.9,en;q=0.8',
  23. 'HTTP_COOKIE' => 'lvt_7b1919221=1237y75',
  24. 'HTTP_SEC_WEBSOCKET_KEY' => 'MWXGA2FauwGJ2beehaqZsQ==',
  25. 'HTTP_SEC_WEBSOCKET_EXTENSIONS' => 'permessage-deflate; client_max_window_bits',
  26. 'QUERY_STRING' => 'token=kjxdvjkasfh',
  27. ),
  28. 'cookie' =>
  29. array (
  30. 'lvt_7b1919221' => '1237y75'
  31. ),
  32. )