2018-11-20 10:51:00 +00:00
|
|
|
<?php
|
|
|
|
|
|
2018-11-21 11:13:40 +00:00
|
|
|
namespace BeyondCode\LaravelWebSockets\Server;
|
2018-11-20 10:51:00 +00:00
|
|
|
|
|
|
|
|
use Ratchet\Http\Router;
|
|
|
|
|
use Ratchet\Http\HttpServer;
|
|
|
|
|
use Ratchet\Server\IoServer;
|
|
|
|
|
use Ratchet\Server\FlashPolicy;
|
|
|
|
|
use React\EventLoop\LoopInterface;
|
|
|
|
|
use React\Socket\Server as Reactor;
|
|
|
|
|
use React\EventLoop\Factory as LoopFactory;
|
|
|
|
|
use Symfony\Component\Routing\RequestContext;
|
|
|
|
|
use Symfony\Component\Routing\Matcher\UrlMatcher;
|
|
|
|
|
use BeyondCode\LaravelWebSockets\Facades\WebSocketRouter;
|
|
|
|
|
|
2018-11-21 20:23:25 +00:00
|
|
|
class WebSocketServer
|
|
|
|
|
{
|
|
|
|
|
/** @var \Ratchet\Server\IoServer */
|
|
|
|
|
protected $server;
|
2018-11-20 10:51:00 +00:00
|
|
|
|
2018-11-21 20:23:25 +00:00
|
|
|
public function __construct($port = 8080, $address = '127.0.0.1', LoopInterface $loop)
|
|
|
|
|
{
|
2018-11-20 10:51:00 +00:00
|
|
|
$socket = new Reactor($address . ':' . $port, $loop);
|
|
|
|
|
|
2018-11-21 20:23:25 +00:00
|
|
|
$this->server = new IoServer(new HttpServer(new Router(new UrlMatcher(WebSocketRouter::getRoutes(), new RequestContext))), $socket, $loop);
|
2018-11-20 10:51:00 +00:00
|
|
|
}
|
|
|
|
|
|
2018-11-21 20:23:25 +00:00
|
|
|
public function run()
|
|
|
|
|
{
|
|
|
|
|
$this->server->run();
|
2018-11-20 10:51:00 +00:00
|
|
|
}
|
|
|
|
|
}
|