Я использую Ratchet для веб-сокетов. Это работает в целом, но я хочу использовать внутри моего ExampleController Laravels Auth
, Это должно быть легко, но это не работает:
<?php namespace Annotation\Http\Controllers;
use Auth;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
class ExampleController extends Controller implements MessageComponentInterface {
public function onOpen(ConnectionInterface $conn) {
echo Auth::id();
//etc.
echo "New Connection! ({$conn->resourceId})";
}
}
Я всегда получаю класс Auth
исключение не найдено, когда я запускаю свой контроллер в файле websocket-server.php (находится в корневом каталоге laravel) ниже:
<?php
require __DIR__.'/vendor/autoload.php';
use Ratchet\Server\IoServer;
use Annotation\Http\Controllers\CollaborativeController;
$server = IoServer::factory(
new ExampleController(),
8080
);
$server->run();
Если я использую свой ExampleController как обычный контроллер с маршрутом, будет найден класс Auth. (Я также не могу использовать помощник по аутентификации или что-либо, связанное с laravel)
Почему это происходит? Поскольку Laravel еще не инициализирован или мне нужно добавить путь?
Функция auth возвращает экземпляр аутентификатора. Вы можете использовать его вместо фасада Auth для удобства:
echo auth()->user()->id;
Добавьте следующие строки в ваш server.php, если вы хотите загрузить промежуточное ПО.
Auth — это промежуточное ПО, и оно не инициализировано и не загружено.
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php'; (set a proper path to your bootstrap)