Bir projemde kullanmak üzere soket üzerinden veri transferi yapmak istiyorum. Ancak birden çok sekme açılabilir ve bu da birden çok soket bağlantısı açılmasına sebep olur. Bunun yerine soket bağlantısını SharedWorker üzerine alıp oradan bilgileri dağıtmak istiyorum.
Sharedworker kodu aşağıdaki gibi.
import Echo from 'laravel-echo';
require("pusher-js");
require("./pusher.worker");
const clients = [];
const EchoServer = new Echo({
broadcaster: 'pusher',
key: 'your-pusher-key',
wsHost: window.location.hostname,
wsPort: 6001,
forceTLS: false,
disableStats: true,
})
EchoServer.private('test-channel')
.listen('.test-data', (e) => {
clients.forEach(function (client) {
client.postMessage(clients);
});
})
self.addEventListener('connect', (evt) => {
var port = evt.ports[0];
clients.push(port);
port.start();
})VUE component içinde de bu şekilde çağırıyorum:
const notificationWorker = new SharedWorker("/js/notification.worker.js", "core");
export default {
setup () {
onMounted(() => {
notificationWorker.port.addEventListener('message', (evt) => {
console.log('message');
console.log(evt)
})
notificationWorker.port.onerror = (err) => {
console.log('error');
console.log(err)
notificationWorker.port.close();
}
notificationWorker.port.start();
})
return {
}
}
}Konu hakkında yardımcı olabilir misiniz?