nitpicks
This commit is contained in:
parent
ee0ab6b463
commit
6895961c74
|
|
@ -5,7 +5,7 @@ namespace BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Channels;
|
||||||
use BeyondCode\LaravelWebSockets\Events\ChannelOccupied;
|
use BeyondCode\LaravelWebSockets\Events\ChannelOccupied;
|
||||||
use BeyondCode\LaravelWebSockets\Events\ChannelVacated;
|
use BeyondCode\LaravelWebSockets\Events\ChannelVacated;
|
||||||
use BeyondCode\LaravelWebSockets\Events\SubscribedToChannel;
|
use BeyondCode\LaravelWebSockets\Events\SubscribedToChannel;
|
||||||
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions\InvalidSignatureException;
|
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions\InvalidSignature;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
use Ratchet\ConnectionInterface;
|
use Ratchet\ConnectionInterface;
|
||||||
use stdClass;
|
use stdClass;
|
||||||
|
|
@ -39,7 +39,7 @@ class Channel
|
||||||
}
|
}
|
||||||
|
|
||||||
if (str_after($auth, ':') !== hash_hmac('sha256', $signature, $connection->client->appSecret)) {
|
if (str_after($auth, ':') !== hash_hmac('sha256', $signature, $connection->client->appSecret)) {
|
||||||
throw new InvalidSignatureException();
|
throw new InvalidSignature();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
namespace BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions;
|
namespace BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions;
|
||||||
|
|
||||||
class InvalidConnectionException extends PusherException
|
class InvalidConnection extends PusherException
|
||||||
{
|
{
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
namespace BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions;
|
namespace BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions;
|
||||||
|
|
||||||
class InvalidSignatureException extends PusherException
|
class InvalidSignature extends PusherException
|
||||||
{
|
{
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
namespace BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions;
|
namespace BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions;
|
||||||
|
|
||||||
class UnknownAppKeyException extends PusherException
|
class UnknownAppKey extends PusherException
|
||||||
{
|
{
|
||||||
public function __construct(string $appKey)
|
public function __construct(string $appKey)
|
||||||
{
|
{
|
||||||
|
|
@ -4,7 +4,6 @@ namespace BeyondCode\LaravelWebSockets\LaravelEcho\WebSocket;
|
||||||
|
|
||||||
use BeyondCode\LaravelWebSockets\Events\ClientMessageSent;
|
use BeyondCode\LaravelWebSockets\Events\ClientMessageSent;
|
||||||
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Channels\ChannelManager;
|
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Channels\ChannelManager;
|
||||||
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Dashboard;
|
|
||||||
use Ratchet\ConnectionInterface;
|
use Ratchet\ConnectionInterface;
|
||||||
use stdClass;
|
use stdClass;
|
||||||
|
|
||||||
|
|
@ -30,12 +29,14 @@ class Message implements RespondableMessage
|
||||||
|
|
||||||
public function respond()
|
public function respond()
|
||||||
{
|
{
|
||||||
if (starts_with($this->payload->event, 'client-')) {
|
if (!starts_with($this->payload->event, 'client-')) {
|
||||||
event(new ClientMessageSent($this->connection, $this->payload));
|
return;
|
||||||
|
|
||||||
$channel = $this->channelManager->find($this->connection->client->appId, $this->payload->channel);
|
|
||||||
|
|
||||||
optional($channel)->broadcast($this->payload);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event(new ClientMessageSent($this->connection, $this->payload));
|
||||||
|
|
||||||
|
$channel = $this->channelManager->find($this->connection->client->appId, $this->payload->channel);
|
||||||
|
|
||||||
|
optional($channel)->broadcast($this->payload);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3,7 +3,6 @@
|
||||||
namespace BeyondCode\LaravelWebSockets\LaravelEcho\WebSocket;
|
namespace BeyondCode\LaravelWebSockets\LaravelEcho\WebSocket;
|
||||||
|
|
||||||
use BeyondCode\LaravelWebSockets\Events\ConnectionEstablished;
|
use BeyondCode\LaravelWebSockets\Events\ConnectionEstablished;
|
||||||
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Dashboard;
|
|
||||||
use BeyondCode\LaravelWebSockets\QueryParameters;
|
use BeyondCode\LaravelWebSockets\QueryParameters;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Ratchet\ConnectionInterface;
|
use Ratchet\ConnectionInterface;
|
||||||
|
|
@ -12,7 +11,7 @@ use BeyondCode\LaravelWebSockets\WebSocketController;
|
||||||
use BeyondCode\LaravelWebSockets\ClientProviders\Client;
|
use BeyondCode\LaravelWebSockets\ClientProviders\Client;
|
||||||
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Channels\ChannelManager;
|
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Channels\ChannelManager;
|
||||||
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions\PusherException;
|
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions\PusherException;
|
||||||
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions\UnknownAppKeyException;
|
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions\UnknownAppKey;
|
||||||
|
|
||||||
class PusherServer extends WebSocketController
|
class PusherServer extends WebSocketController
|
||||||
{
|
{
|
||||||
|
|
@ -26,11 +25,10 @@ class PusherServer extends WebSocketController
|
||||||
|
|
||||||
function onOpen(ConnectionInterface $connection)
|
function onOpen(ConnectionInterface $connection)
|
||||||
{
|
{
|
||||||
$this->generateSocketId($connection);
|
$this
|
||||||
|
->generateSocketId($connection)
|
||||||
$this->verifyConnection($connection);
|
->verifyConnection($connection)
|
||||||
|
->establishConnection($connection);
|
||||||
$this->establishConnection($connection);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onMessage(ConnectionInterface $connection, MessageInterface $message)
|
public function onMessage(ConnectionInterface $connection, MessageInterface $message)
|
||||||
|
|
@ -45,7 +43,7 @@ class PusherServer extends WebSocketController
|
||||||
$this->channelManager->removeFromAllChannels($connection);
|
$this->channelManager->removeFromAllChannels($connection);
|
||||||
}
|
}
|
||||||
|
|
||||||
function onError(ConnectionInterface $connection, Exception $exception)
|
public function onError(ConnectionInterface $connection, Exception $exception)
|
||||||
{
|
{
|
||||||
if ($exception instanceof PusherException) {
|
if ($exception instanceof PusherException) {
|
||||||
$connection->send(json_encode(
|
$connection->send(json_encode(
|
||||||
|
|
@ -54,15 +52,26 @@ class PusherServer extends WebSocketController
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function generateSocketId(ConnectionInterface $connection)
|
||||||
|
{
|
||||||
|
$socketId = sprintf("%d.%d", getmypid(), random_int(1, 100000000));
|
||||||
|
|
||||||
|
$connection->socketId = $socketId;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
protected function verifyConnection(ConnectionInterface $connection)
|
protected function verifyConnection(ConnectionInterface $connection)
|
||||||
{
|
{
|
||||||
$appKey = QueryParameters::create($connection->httpRequest)->get('appKey');
|
$appKey = QueryParameters::create($connection->httpRequest)->get('appKey');
|
||||||
|
|
||||||
if (! $client = Client::findByAppKey($appKey)) {
|
if (!$client = Client::findByAppKey($appKey)) {
|
||||||
throw new UnknownAppKeyException($appKey);
|
throw new UnknownAppKey($appKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
$connection->client = $client;
|
$connection->client = $client;
|
||||||
|
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function establishConnection(ConnectionInterface $connection)
|
protected function establishConnection(ConnectionInterface $connection)
|
||||||
|
|
@ -76,12 +85,7 @@ class PusherServer extends WebSocketController
|
||||||
]));
|
]));
|
||||||
|
|
||||||
event(new ConnectionEstablished($connection));
|
event(new ConnectionEstablished($connection));
|
||||||
}
|
|
||||||
|
|
||||||
protected function generateSocketId(ConnectionInterface $connection)
|
return $this;
|
||||||
{
|
|
||||||
$socketId = sprintf("%d.%d", getmypid(), random_int(1, 100000000));
|
|
||||||
|
|
||||||
$connection->socketId = $socketId;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
namespace BeyondCode\LaravelWebSockets\Tests;
|
namespace BeyondCode\LaravelWebSockets\Tests;
|
||||||
|
|
||||||
use BeyondCode\LaravelWebSockets\ClientProviders\Client;
|
use BeyondCode\LaravelWebSockets\ClientProviders\Client;
|
||||||
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions\InvalidSignatureException;
|
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions\InvalidSignature;
|
||||||
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions\UnknownAppKeyException;
|
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Exceptions\UnknownAppKey;
|
||||||
use BeyondCode\LaravelWebSockets\LaravelEcho\WebSocket\PusherServer;
|
use BeyondCode\LaravelWebSockets\LaravelEcho\WebSocket\PusherServer;
|
||||||
use BeyondCode\LaravelWebSockets\Tests\Mocks\Message;
|
use BeyondCode\LaravelWebSockets\Tests\Mocks\Message;
|
||||||
|
|
||||||
|
|
@ -23,7 +23,7 @@ class ConnectionTest extends TestCase
|
||||||
/** @test */
|
/** @test */
|
||||||
public function unknown_app_keys_can_not_connect()
|
public function unknown_app_keys_can_not_connect()
|
||||||
{
|
{
|
||||||
$this->expectException(UnknownAppKeyException::class);
|
$this->expectException(UnknownAppKey::class);
|
||||||
|
|
||||||
$this->pusherServer->onOpen($this->getWebSocketConnection('/?appKey=test'));
|
$this->pusherServer->onOpen($this->getWebSocketConnection('/?appKey=test'));
|
||||||
}
|
}
|
||||||
|
|
@ -90,7 +90,7 @@ class ConnectionTest extends TestCase
|
||||||
/** @test */
|
/** @test */
|
||||||
public function clients_need_valid_auth_signatures_for_private_channels()
|
public function clients_need_valid_auth_signatures_for_private_channels()
|
||||||
{
|
{
|
||||||
$this->expectException(InvalidSignatureException::class);
|
$this->expectException(InvalidSignature::class);
|
||||||
|
|
||||||
$connection = $this->getWebSocketConnection();
|
$connection = $this->getWebSocketConnection();
|
||||||
|
|
||||||
|
|
@ -134,7 +134,7 @@ class ConnectionTest extends TestCase
|
||||||
/** @test */
|
/** @test */
|
||||||
public function clients_need_valid_auth_signatures_for_presence_channels()
|
public function clients_need_valid_auth_signatures_for_presence_channels()
|
||||||
{
|
{
|
||||||
$this->expectException(InvalidSignatureException::class);
|
$this->expectException(InvalidSignature::class);
|
||||||
|
|
||||||
$connection = $this->getWebSocketConnection();
|
$connection = $this->getWebSocketConnection();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue