Итак, я работаю над этим приложением Laravel, которое использует храповик для веб-сокетов, и я хочу получить текущий сеанс пользователей в моем контроллере веб-сокетов. Раньше я работал с Laravel 5.2, и этот код отлично работал.
public function onOpen(ConnectionInterface $conn) {
$session = (new SessionManager(App::getInstance()))->driver();
$cookies = $conn->WebSocket->request->getCookies();
if(!empty($cookies)){
$laravelCookie = urldecode(isset($cookies[Config::get('session.cookie')]) ? $cookies[Config::get('session.cookie')] : '');
if(!empty($laravelCookie)){
$idSession = Crypt::decrypt($laravelCookie);
$session->setId($idSession);
$conn->session = $session;
}
}
$newConnection = new \stdClass();
$newConnection->resourceId = $conn->resourceId;
$newConnection->conn = $conn;
$this->clients[] = $newConnection;
$newConnection->conn->send(json_encode(['status' => 'success', 'message' => 'Response from server, successful']));
}
После того, как пользователь подключился, я просто загружаю текущий сеанс, когда пользователь отправляет сообщение
public function onMessage(ConnectionInterface $from, $msg) {
$user = [];
$request = json_decode($msg);
if(isset($from->session)){
$from->session->start();
$idUser = $from->session->get(Auth::getName());
QLog::info($idUser);
if (isset($idUser)) {
$user = User::find($idUser);
}
$from->session->save();
}
if($request->action == 'get-user' && $user){
$this->clients[0]->conn->send(json_encode(['username' => $user->getFullName()]));
} else {
$this->clients[0]->conn->send(json_encode(['username' => 'not found']));
}
}
Но теперь мне нужно сделать то же самое в Laravel 4.2, но как оказалось, что в Laravel 4.2 нет метода getInstance(). Что было бы лучшей альтернативой для использования в моей ситуации?