StreamServer.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace App\Service\Server;
  3. use Hyperf\Dispatcher\HttpDispatcher;
  4. use Hyperf\ExceptionHandler\ExceptionHandlerDispatcher;
  5. use Hyperf\HttpServer\ResponseEmitter;
  6. use Hyperf\HttpServer\Server;
  7. use Psr\Container\ContainerInterface;
  8. use Swoole\Http\Request;
  9. use Swoole\Http\Response;
  10. class StreamServer extends Server
  11. {
  12. const STREAM_URL = [
  13. '/chat/stream'
  14. ];
  15. public function __construct(ContainerInterface $container, HttpDispatcher $dispatcher, ExceptionHandlerDispatcher $exceptionHandlerDispatcher, ResponseEmitter $responseEmitter)
  16. {
  17. parent::__construct($container, $dispatcher, $exceptionHandlerDispatcher, $responseEmitter);
  18. }
  19. /**
  20. * @param Request $request
  21. * @param Response $response
  22. */
  23. public function onRequest($request, $response): void
  24. {
  25. $pathInfo = $request->server['path_info'];
  26. if (in_array($pathInfo, self::STREAM_URL)) {
  27. $response->header('Content-Type', 'text/event-stream');
  28. $response->header('Access-Control-Allow-Origin', '*');
  29. $response->header('Access-Control-Allow-Methods', 'GET');
  30. $response->header('Cache-Control', 'no-cache');
  31. $response->header('Connection', 'keep-alive');
  32. }
  33. parent::onRequest($request, $response);
  34. }
  35. }