Я пытаюсь сохранить только одно активное соединение для пользователя, который открывает несколько вкладок в моем приложении, которое использует Pusher с Laravel Echo, я смог заставить его работать над тестовым проектом, следуя статье и примеру проекта ниже.
https://blog.pusher.com/reduce-websocket-connections-with-shared-workers/
https://github.com/pusher-community/pusher-with-shared-workers
Но я с трудом пытаюсь адаптировать его для работы с моим проектом Laravel, как мне это сделать?
Вот конфигурация, которую я добавил в мой bootstrap.js
файл
import Echo from 'laravel-echo'
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
encrypted: true
});
$.getJSON( "/heartbeat", function( json ) {
window.Echo.channel('user.' + json.user_id).listen('NotifyUser', e => {
displayModal(e.msg);
console.log('User with an id of ' + e.id + ' has been notified.');
console.log(e);
// Relay the message on to each client
clients.forEach(function(client){
client.postMessage(data);
});
});
});
self.addEventListener("connect", function(evt){
// Add the port to the list of connected clients
var port = evt.ports[0];
clients.push(port);
// Start the worker.
port.start();
});
Он работает, но не так, как я хочу, он создает новое соединение для каждой открытой вкладки.