Laravel redis socket.io нет сообщений - PullRequest
0 голосов
/ 27 февраля 2019

Я не получаю сообщений, если я пытаюсь отправить сообщение через socket.io / redis, я использую Laravel Events для этого случая.Класс socket.js создает сервер и выглядит следующим образом:

var fs = require('fs');
var options = {
    key: fs.readFileSync('/etc/nginx/ssl/mydomain.com/123/server.key')
    cert: fs.readFileSync('/etc/nginx/ssl/mydomain.com/123/server.crt')
};

var app = require('https').createServer(options,handler);
var io    = require('socket.io')(app);
var Redis = require('ioredis');
var redis = new Redis();

function handler(req, res) {
    res.writeHead(200);
    res.end('');
}

io.on('connection', function(socket) {});

// Channel if user signs up
var redisUserSignedUp = new Redis();

redisUserSignedUp.subscribe('signed-up-channel');
redisUserSignedUp.on('message', function(channel, message) {
    message = JSON.parse(message);
    io.emit(channel + ':' + message.event, message.data);
});

// run server on port 8111
app.listen(8111, function () {
    console.log('Der Server läuft!');
});

Я просто запускаю node socket.js на моем сервере Ubuntu.Я пытаюсь получить сообщение и показать уведомление, подобное этому, в моем файле event.js:

// event.js if something happen some notification should appear
var url = window.location.origin.replace(/\/$/, "")+':8111';
var socket = io(url);

// ...

// UserSignedUp Event, is fired in Auth\RegisterController if a user signs up
socket.on('signed-up-channel:App\\Events\\UserSignedUp', (data) => {
    this.signedUpUsers = data.username;
    this.$toasted.info("Following User has registered: ", {
        theme: "primary",
        position: "top-right",
        icon: {
            name: 'chevron-right',
            after: true,
        },
        iconPack: 'fontawesome',
        duration: 10000
    });
});

Но я не получаю ответа, и это простой класс Event от laravel:

<?php

namespace App\Events;

use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class UserSignedUp extends Event implements ShouldBroadcast
{
    use SerializesModels;

    public $username;

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

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

Я получаю следующие выходные данные из моих журналов:

Broadcasting [App\Events\UserSignedUp] on channels [signed-up-channel] with payload:
{
    "username": "King",
    "socket": null
}

И на моем локальном компьютере с Windows я получаю правильное уведомление, если происходит это событие, поэтому я что-то упускаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...