2015-10-06 144 views
0

我正在使用Laravel 5.1。我試圖觸發相關函數調用的UserAddedFriend事件,並被Socket.io和Redis抓住。廣播事件 - 適用於服務器端,但不適用於客戶端

所以我在服務器端運行node socket.js。一切似乎對我來說都是好的,當我打開2個瀏覽器並用2個不同的用戶(X和Y)登錄時,兩者都連接起來。

當我調用函數'addFriend'函數時,事件被觸發。在服務器上,node socket.js也打印Received文字;但是在控制檯中的任何瀏覽器上都不會返回任何內容。

我在想什麼或做錯了什麼?


因此,對'addFriend()函數,我火了這一事件:

\Event::fire(new UserAddedFriend($username)); 

在類UserAddedFriend

class UserAddedFriend extends Event implements ShouldBroadcast 

public $username; 

public function __construct($username) 
{ 
    $this->username = $username; 

} 

public function broadcastOn() 
{ 
    return ['test-channel']; 
} 

服務器:

var server = require('http').Server(); 
var io = require('socket.io')(server); 

var Redis = require('ioredis'); 
var redis = new Redis(); 

redis.subscribe('test-channel', function(err, count) { 
    // 
}); 

redis.on('message', function(channel, message) { 
    console.log("Received");  // gets printed 

    message = JSON.parse(message); 
    io.emit(channel + ':' + message.event, message.data); 
}); 

server.listen(3000); 

最後,客戶

<script> 
    var socket = io('http://192.168.10.10:3000'); 

    socket.on('test-channel:UserAddedFriend', function(data) { 
     console.log('a');  // nothing logged 
     console.log(data); // nothing logged 
    }); 

</script> 

要添加,不使用事件處理程序;但是當我使用事件處理功能並使用&轉儲$event時,它成功轉儲。

public function handle(UserAddedFriend $event) 
    { 
    dd($event->username . ' added you.'); 
    } 

回答

0

我發現我的問題。

socket.on('test-channel:UserAddedFriend', function(data)

應該

socket.on('test-channel:App\\Events\\UserAddedFriend', function(data)

相關問題