From 06031351cf00986e7c2118ddcf892fa1c7e7234e Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Mon, 27 Aug 2018 00:47:26 +0200 Subject: Added basic websocket service --- .../Console/Commands/WebSocketServerCommand.php | 38 +++++++++++++++ infrastructure/Console/Kernel.php | 3 +- infrastructure/Http/WebSocketController.php | 56 ++++++++++++++++++++++ 3 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 infrastructure/Console/Commands/WebSocketServerCommand.php create mode 100644 infrastructure/Http/WebSocketController.php (limited to 'infrastructure') diff --git a/infrastructure/Console/Commands/WebSocketServerCommand.php b/infrastructure/Console/Commands/WebSocketServerCommand.php new file mode 100644 index 0000000..4723b29 --- /dev/null +++ b/infrastructure/Console/Commands/WebSocketServerCommand.php @@ -0,0 +1,38 @@ +line('Started server.'); + $server->run(); + } +} \ No newline at end of file diff --git a/infrastructure/Console/Kernel.php b/infrastructure/Console/Kernel.php index dffc73a..13329ae 100644 --- a/infrastructure/Console/Kernel.php +++ b/infrastructure/Console/Kernel.php @@ -14,7 +14,8 @@ class Kernel extends ConsoleKernel * @var array */ protected $commands = [ - AddUserCommand::class + AddUserCommand::class, + Commands\WebSocketServerCommand::class ]; /** diff --git a/infrastructure/Http/WebSocketController.php b/infrastructure/Http/WebSocketController.php new file mode 100644 index 0000000..19e0868 --- /dev/null +++ b/infrastructure/Http/WebSocketController.php @@ -0,0 +1,56 @@ +connections[$conn->resourceId] = compact('conn') + ['user_id' => null]; + } + + /** + * This is called before or after a socket is closed (depends on how it's closed). SendMessage to $conn will not result in an error if it has already been closed. + * @param ConnectionInterface $conn The socket/connection that is closing/closed + * @throws \Exception + */ + function onClose(ConnectionInterface $conn) + { + $disconnectedId = $conn->resourceId; + unset($this->connections[$disconnectedId]); + } + + /** + * If there is an error with one of the sockets, or somewhere in the application where an Exception is thrown, + * the Exception is sent back down the stack, handled by the Server and bubbled back up the application through this method + * @param ConnectionInterface $conn + * @param \Exception $e + * @throws \Exception + */ + function onError(ConnectionInterface $conn, \Exception $e) + { + unset($this->connections[$conn->resourceId]); + $conn->close(); + } + + /** + * Triggered when a client sends data through the socket + * @param \Ratchet\ConnectionInterface $conn The socket/connection that sent the message to your application + * @param string $msg The message received + * @throws \Exception + */ + function onMessage(ConnectionInterface $conn, $msg) + { + + } +} \ No newline at end of file -- cgit v1.2.3