2016-08-24 120 views
0

我正在使用Ratchet for websockets。它一般工作,但我想在我的ExampleController Laravels Auth中使用。它應該很容易,但是,這並不工作:Laravel 5.2 and Ratchet Class not found

<?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還沒有初始化,還是需要添加路徑?

回答

0

auth函數返回一個驗證器實例。你可以用它代替驗證幌子,爲方便:

echo auth()->user()->id; 
+0

這是行不通的,因爲輔助類和laravels未加載IOC。 – Marco

0

以下行添加到您的server.php如果要加載中間件。 Auth是一箇中間件,它不會被初始化和加載。

require __DIR__.'/../bootstrap/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php'; (set a proper path to your bootstrap)