wip
This commit is contained in:
parent
0fa9213133
commit
6796fb4062
|
|
@ -1,4 +1,4 @@
|
|||
# Laravel Websockets 🚀
|
||||
# Laravel WebSockets 🚀
|
||||
|
||||
[](https://packagist.org/packages/beyondcode/laravel-websockets)
|
||||
[](https://travis-ci.org/beyondcode/laravel-websockets)
|
||||
|
|
@ -18,7 +18,7 @@ composer require beyondcode/laravel-websockets
|
|||
## Usage
|
||||
|
||||
``` php
|
||||
$skeleton = new BeyondCode\LaravelWebsockets();
|
||||
$skeleton = new BeyondCode\LaravelWebSockets();
|
||||
echo $skeleton->echoPhrase('Hello, BeyondCode!');
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,10 @@
|
|||
],
|
||||
"require": {
|
||||
"php": "^7.1",
|
||||
"illuminate/http": "5.6.*|5.7.*"
|
||||
"cboden/ratchet": "^0.4.1",
|
||||
"illuminate/support": "5.6.*|5.7.*",
|
||||
"illuminate/http": "5.6.*|5.7.*",
|
||||
"illuminate/routing": "5.6.*|5.7.*"
|
||||
},
|
||||
"require-dev": {
|
||||
"larapack/dd": "^1.0",
|
||||
|
|
@ -31,12 +34,12 @@
|
|||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"BeyondCode\\LaravelWebsockets\\": "src"
|
||||
"BeyondCode\\LaravelWebSockets\\": "src"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"BeyondCode\\LaravelWebsockets\\Tests\\": "tests"
|
||||
"BeyondCode\\LaravelWebSockets\\Tests\\": "tests"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
|
|
@ -50,8 +53,11 @@
|
|||
"extra": {
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"BeyondCode\\LaravelWebsockets\\LaravelWebsocketsServiceProvider"
|
||||
]
|
||||
"BeyondCode\\LaravelWebSockets\\LaravelWebSocketsServiceProvider"
|
||||
],
|
||||
"aliases": {
|
||||
"WebSocketRouter": "BeyondCode\\LaravelWebSockets\\Facades\\WebSocketRouter"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
|
||||
namespace BeyondCode\LaravelWebSockets\Exceptions;
|
||||
|
||||
class InvalidWebSocketController extends \Exception
|
||||
{
|
||||
public static function withController($controller)
|
||||
{
|
||||
return new static('Invalid WebSocket Controller provided. Expected instance of WebSocketController, but received '.$controller);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
|
||||
namespace BeyondCode\LaravelWebSockets\Facades;
|
||||
|
||||
use Illuminate\Support\Facades\Facade;
|
||||
|
||||
/**
|
||||
* @see \BeyondCode\LaravelWebSockets\Router
|
||||
*/
|
||||
class WebSocketRouter extends Facade
|
||||
{
|
||||
/**
|
||||
* Get the registered name of the component.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected static function getFacadeAccessor()
|
||||
{
|
||||
return 'websockets.router';
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
|
||||
namespace BeyondCode\LaravelWebSockets;
|
||||
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\Routing\Router as LaravelRouter;
|
||||
use BeyondCode\LaravelWebSockets\Facades\WebSocketRouter;
|
||||
|
||||
class LaravelWebSocketsServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Bootstrap the application services.
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
LaravelRouter::macro('websocket', function($uri, $action) {
|
||||
WebSocketRouter::addRoute($uri, $action);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the application services.
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
$this->app->singleton('websockets.router', function() {
|
||||
return new Router();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace BeyondCode\LaravelWebsockets;
|
||||
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class LaravelWebsocketsServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Bootstrap the application services.
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the application services.
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
|
||||
namespace BeyondCode\LaravelWebSockets;
|
||||
|
||||
use Symfony\Component\Routing\Route;
|
||||
use Symfony\Component\Routing\RouteCollection;
|
||||
use BeyondCode\LaravelWebSockets\Exceptions\InvalidWebSocketController;
|
||||
|
||||
class Router
|
||||
{
|
||||
/** @var RouteCollection */
|
||||
protected $routes;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->routes = new RouteCollection;
|
||||
}
|
||||
|
||||
public function addRoute($uri, $action)
|
||||
{
|
||||
if (! is_subclass_of($action, WebSocketController::class)) {
|
||||
throw InvalidWebSocketController::withController($action);
|
||||
}
|
||||
|
||||
$this->routes->add($uri, $this->getRoute($uri, $action));
|
||||
}
|
||||
|
||||
protected function getRoute($uri, $action) : Route
|
||||
{
|
||||
return new Route($uri, ['_controller' => app($action)], [], [], null, [], ['GET']);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
<?php
|
||||
|
||||
namespace BeyondCode\LaravelWebSockets;
|
||||
|
||||
use Ratchet\ConnectionInterface;
|
||||
use Ratchet\RFC6455\Messaging\MessageInterface;
|
||||
use Ratchet\WebSocket\MessageComponentInterface;
|
||||
|
||||
class WebSocketController implements MessageComponentInterface
|
||||
{
|
||||
|
||||
/**
|
||||
* When a new connection is opened it will be passed to this method
|
||||
* @param ConnectionInterface $conn The socket/connection that just connected to your application
|
||||
* @throws \Exception
|
||||
*/
|
||||
function onOpen(ConnectionInterface $conn)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public function onMessage(ConnectionInterface $conn, MessageInterface $msg)
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace BeyondCode\LaravelWebsockets\Tests;
|
||||
namespace BeyondCode\LaravelWebSockets\Tests;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue