Простое решение для этого - сервер веб-сокетов в узле, который получает обновления от 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',
]
));