【问题标题】:How to listen with node.js and redis Laravel 5 events如何使用 node.js 和 redis Laravel 5 监听事件
【发布时间】:2015-10-15 14:47:57
【问题描述】:

在 Laravel 5 中没有实现 ShouldBroadCast 方法,知道如何手动实现它吗?

这是我的尝试。

这是ProjectNotificationEvent的处理程序:

<?php namespace App\Handlers\Events;

use App\Events\ProjectNotificationEvent;

use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldBeQueued;
use App\Notification;
use Illuminate\Support\Facades\Redis;
class NotifyUserAboutGroup {


        CONST CHANNEL = 'update.group';
    public function handle(ProjectNotificationEvent $event)
    {


            foreach ($event as $events){
                $redis = Redis::connection();
                $redis->publish(self::CHANNEL, $events->name);

                }
     }

}

这是 node.js:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var Redis = require('ioredis');
var redis = new Redis();
redis.subscribe('update.group', function(err, count) {
});
redis.on('message', function(channel, message) {
    console.log('Message Recieved: ' + message);
    message = JSON.parse(message);
    io.emit(channel + ':' + message.event, message.data);
});
http.listen(3000, function(){
    console.log('Listening on Port 3000');
});

在我看来,在客户端我有这个:

var socket = io.connect('127.0.0.1:3000');

            socket.on("update.group:App\\Events\\ProjectNotificationEvent", function(message){
            // increase the power everytime we load test route
            console.log(message);
        });

问题出在客户端 console.log 不返回任何内容。

有什么解决办法吗?

【问题讨论】:

    标签: javascript php node.js redis laravel-5


    【解决方案1】:
    var socket = io.connect('127.0.0.1:3000');
    
    socket.on('message', function (data) {
        console.log(data);
    });
    

    请试试这个

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-15
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      • 2020-06-24
      • 1970-01-01
      相关资源
      最近更新 更多