我正在使用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.');
}