laravel-websockets/src/LaravelEcho/Http/Controllers/EchoController.php

60 lines
1.9 KiB
PHP
Raw Normal View History

2018-11-20 13:50:37 +00:00
<?php
namespace BeyondCode\LaravelWebsockets\LaravelEcho\Http\Controllers;
use Ratchet\ConnectionInterface;
use Illuminate\Http\JsonResponse;
use Ratchet\Http\HttpServerInterface;
use Psr\Http\Message\RequestInterface;
abstract class EchoController implements HttpServerInterface
{
/**
* 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)
{
//
}
/**
* 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)
{
//
}
/**
* @param \Ratchet\ConnectionInterface $conn
* @param \Psr\Http\Message\RequestInterface $request null is default because PHP won't let me overload; don't pass null!!!
* @throws \UnexpectedValueException if a RequestInterface is not passed
*/
public function onOpen(ConnectionInterface $conn, RequestInterface $request = null)
{
$response = $this($request);
$conn->send(JsonResponse::create($response)->send());
$conn->close();
}
/**
* Triggered when a client sends data through the socket
* @param \Ratchet\ConnectionInterface $from The socket/connection that sent the message to your application
* @param string $msg The message received
* @throws \Exception
*/
function onMessage(ConnectionInterface $from, $msg)
{
//
}
abstract public function __invoke($request);
}