База данных реального времени в Laravel и Websockets - PullRequest
0 голосов
/ 26 ноября 2018

Есть ли способ, с помощью которого мы можем обновлять данные в Front end, когда мы вносим некоторые изменения в базу данных в Laravel и Websockets без использования Tokens / Passport.Просто покажите обновленные данные в режиме реального времени без тайм-аута.

1 Ответ

0 голосов
/ 26 ноября 2018

Простое решение для этого - сервер веб-сокетов в узле, который получает обновления от laravel через публикацию redis.Сервер веб-сокетов подписывается на клиента (фронт-пользователя) в теме, через которую вы проталкиваете свои данные.

Вот код, который нужно попробовать.(Нет аутентификации, поэтому не используйте в Prod!).redistopic - это тема для redis

var express = require('express'),
fs = require('fs'),
http = require('http'),
server = http.createServer(app),
var app = express();

/* redis + socket.io */
const redis = require('redis');
const io = require('socket.io');
server.listen(8080);
log("Server Start");

io.listen(server).on('connection', function (socket) {
const redisClient = redis.createClient();

socket.on('auth', function (data) {
    if(data.sockethash == 'noauth')
        redisClient.subscribe('redistopic')
}

// Redis Nachrichten Verabrieten und entsprechend weiterleiten
redisClient.on("message", function (channel, message) {
    if (channel == "redistopic")
        socket.emit('redistopic', message);
});

socket.on('disconnect', function () {
    redisClient.quit();
});

});

Часть javascript

socket = io.connect('localhost:8080');
socket.on('connect', function (data) {
        socket.emit('auth', { sockethash: 'noauth' });
});
socket.on('redistopic', function (data) {
   var jd = JSON.parse(data); // if data is json
   console.log(jd) // else use data 
}

Код Laravel для публикации обновлений необходимо "использовать Illuminate \ Support \ Facades \Redis;»до

Redis::publish('redistopic', json_encode(
        [
            'var1' => 'value1',
            'var2' => 'value2',
        ]
    ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...