This commit is contained in:
freek 2018-11-26 00:42:45 +01:00
parent ad2e5560e3
commit e70846d3cd
4 changed files with 45 additions and 16 deletions

View File

@ -3,10 +3,12 @@
namespace BeyondCode\LaravelWebSockets\LaravelEcho\Http\Controllers;
use BeyondCode\LaravelWebSockets\ClientProviders\Client;
use BeyondCode\LaravelWebSockets\QueryParameters;
use Exception;
use Illuminate\Http\Request;
use GuzzleHttp\Psr7 as gPsr;
use GuzzleHttp\Psr7\Response;
use MongoDB\Driver\Query;
use Ratchet\ConnectionInterface;
use Illuminate\Http\JsonResponse;
use GuzzleHttp\Psr7\ServerRequest;
@ -28,16 +30,13 @@ abstract class EchoController implements HttpServerInterface
public function onOpen(ConnectionInterface $connection, RequestInterface $request = null)
{
$queryParameters = [];
parse_str($request->getUri()->getQuery(), $queryParameters);
$serverRequest = (new ServerRequest(
$request->getMethod(),
$request->getUri(),
$request->getHeaders(),
$request->getBody(),
$request->getProtocolVersion()
))->withQueryParams($queryParameters);
))->withQueryParams(QueryParameters::create($request)->all());
$laravelRequest = Request::createFromBase((new HttpFoundationFactory)->createRequest($serverRequest));

View File

@ -3,6 +3,7 @@
namespace BeyondCode\LaravelWebSockets\LaravelEcho\WebSocket;
use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Dashboard;
use BeyondCode\LaravelWebSockets\QueryParameters;
use Exception;
use Ratchet\ConnectionInterface;
use Ratchet\RFC6455\Messaging\MessageInterface;
@ -54,14 +55,10 @@ class PusherServer extends WebSocketController
protected function verifyConnection(ConnectionInterface $connection)
{
/** @var \GuzzleHttp\Psr7\Request $request */
$request = $connection->httpRequest;
$appKey = QueryParameters::create($connection->httpRequest)->get('appKey');
$queryParameters = [];
parse_str($request->getUri()->getQuery(), $queryParameters);
if (! $client = Client::findByAppKey($queryParameters['appKey'])) {
throw new UnknownAppKeyException($queryParameters['appKey']);
if (! $client = Client::findByAppKey($appKey)) {
throw new UnknownAppKeyException($appKey);
}
$connection->client = $client;

35
src/QueryParameters.php Normal file
View File

@ -0,0 +1,35 @@
<?php
namespace BeyondCode\LaravelWebSockets;
use Psr\Http\Message\RequestInterface;
class QueryParameters
{
/** @var \Psr\Http\Message\RequestInterface */
protected $request;
public static function create(RequestInterface $request)
{
return new static($request);
}
public function __construct(RequestInterface $request)
{
$this->request = $request;
}
public function all(): array
{
$queryParameters = [];
parse_str($this->request->getUri()->getQuery(), $queryParameters);
return $queryParameters;
}
public function get(string $name): string
{
return $this->all()[$name] ?? '';
}
}

View File

@ -8,6 +8,7 @@
namespace BeyondCode\LaravelWebSockets\Server\Logger;
use BeyondCode\LaravelWebSockets\QueryParameters;
use Exception;
use Ratchet\ConnectionInterface;
use Ratchet\RFC6455\Messaging\MessageInterface;
@ -34,12 +35,9 @@ class MessageLogger extends Logger implements MessageComponentInterface
public function onOpen(ConnectionInterface $connection)
{
$request = $connection->httpRequest;
$appKey = QueryParameters::create($connection->httpRequest)->get('appKey');
$queryParameters = [];
parse_str($request->getUri()->getQuery(), $queryParameters);
$this->warn("New connection opened for app key {$queryParameters['appKey']}.");
$this->warn("New connection opened for app key {$appKey}.");
$this->app->onOpen(ConnectionLogger::decorate($connection));
}