websocket_server.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. $ssl_dir = realpath('../../tests/ssl');
  3. $serv = new swoole_websocket_server("0.0.0.0", 9502, SWOOLE_BASE, SWOOLE_SOCK_TCP | SWOOLE_SSL);
  4. //$serv = new swoole_websocket_server("0.0.0.0", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);
  5. $serv->set([
  6. 'ssl_cert_file' => $ssl_dir . '/ssl.crt',
  7. 'ssl_key_file' => $ssl_dir . '/ssl.key',
  8. 'worker_num' => 1,
  9. ]);
  10. $port = $serv->listen('127.0.0.1', 9501, SWOOLE_SOCK_TCP);
  11. $port->on('receive', function($serv, $fd, $reactor_id, $data){
  12. var_dump($fd, $reactor_id, $data);
  13. $serv->send($fd, "Swoole: $data");
  14. });
  15. $serv->on('connect', function ($_server, $fd) {
  16. echo "client {$fd} connect\n";
  17. });
  18. $serv->on('open', function (swoole_websocket_server $_server, swoole_http_request $request) {
  19. echo "server#{$_server->worker_pid}: handshake success with fd#{$request->fd}\n";
  20. // var_dump($request);
  21. });
  22. $serv->on('request', function ($req, $resp) {
  23. $resp->end(file_get_contents(__DIR__.'/websocket_client.html'));
  24. });
  25. $serv->on('message', function (swoole_websocket_server $_server, $frame) {
  26. var_dump($frame->data);
  27. echo "received ".strlen($frame->data)." bytes\n";
  28. $_send = str_repeat('B', rand(100, 800));
  29. $_server->push($frame->fd, $_send);
  30. // echo "#$i\tserver sent " . strlen($_send) . " byte \n";
  31. });
  32. $serv->on('close', function ($_server, $fd) {
  33. echo "client {$fd} closed\n";
  34. });
  35. $serv->start();