Laravel Redis使用vue

时间:2017-11-15 16:40:12

标签: javascript php node.js laravel vue.js

我用laravel构建了一个简单的事件类,如果有人发出事件类的通知,我会触发它:

class InquirySent extends Event implements ShouldBroadcast
{
    use SerializesModels;

    public $inquiries;

    public function __construct($inquiries)
    {
        $this->inquiries = $inquiries;
    }
    public function broadcastOn()
    {
        return ['inquiry-sent-channel'];
    }
}

我像这样触发事件(创建一个新实例):

    # fire inquiry notification event
    event(new InquirySent(
        $user->notifications()->where('type', InvoiceInquiry::class)->count()
    ));

我使用此脚本设置节点服务器:

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

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

// class declaration
var Redis = require('ioredis');

/**
 * Redis UserSignedUp Channel
 */
var redisSignedUp = new Redis();

redisSignedUp.subscribe('signed-up-channel');

/**
 * Redis InquirySent Channel
 */
var redisInquirySent = new Redis();

redisInquirySent.subscribe('inquiry-sent-channel');

redisInquirySent.on('message', function(channel, message) {
    message = JSON.parse(message);
    console.log(message.data.inquiries);
    io.emit(channel + ':' + message.event, message.data.inquiries);
});

// run server on port X
server.listen(3000);

在我的event.js中,我这样绑定它:

var socket = io('http://192.168.3.115:3000');

new Vue({

    el: '#app',

   data: {
       inquiries: [],
   },

   ready: function() {
       // InquirySent event
       socket.on('inquiry-sent-channel:App\\Events\\InquirySent', function(data) {
           console.log(data);
           this.inquiries.push(data);
       }.bind(this));
   }

});

控制台(命令行)在我的情况下返回正确的值:69

但如果我尝试用vue.js将它放在我的视图中,它不会显示任何内容,也不会在浏览器控制台中出现任何错误:

<li v-for="inquiry in inquiries">@{{ inquiry }}</li>

0 个答案:

没有答案