仅使用redis socketio与Php进行通信,反之亦然

时间:2016-04-05 14:20:46

标签: php node.js laravel redis socket.io

仅使用redis socketio与Php进行通信反之亦然

我对laravel中的这类事件相当新,但我不太明白如何使用Laravel在socketio与php之间进行通信。

我对这个框架很新,请对我很轻松。

我已经知道如何从Php到Nodejs socketio进行通信,但问题是我不知道相反的通信是如何工作的!

注意:我的PHP会话是REDIS

这是我的命令

class ChatCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'command:name';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        //

        Redis::psubscribe(['*'], function($message) {
            DebugBar::info(message);
            event(new TestEvent());
            Log::info($message);
        });
    }
}

我的socket.js

var io = require('socket.io')(http);
var Redis = require('ioredis');
var redis = new Redis();
var redis1 = new Redis();

//omitted some code here


http.listen(3000, function(){
    console.log('Listening on Port 3000');
});


io.on('connection', function(socket){
    socket.on('chat', function(msg){
        io.emit('chat', msg);
        console.log(msg);
        redis1.publish('chat' , msg);
    });
});

我可以在redis-cli中看到:

使用命令subscribe *

1) "message"
2) "chat"
3) "[object Object]"

这意味着redis1.publish有效,但我不知道为什么我不能在我的Php Laravel应用程序中订阅"

0 个答案:

没有答案