Laravel Echo callback

Я смотрю в Laravel Echo (с socket.io в качестве разъема)

Но я не могу узнать, как связать Перезвоните когда пользователь / посетитель преуспевает или не подключается к сокету (не канал), но обычно, если подключен.

import Echo from "laravel-echo"; //import Laravel-echo

if(typeof(io) != 'undefined'){ //check if io loaded
//init Echo
window.Echo = new Echo({
broadcaster: 'socket.io',
host: { path: '/socket.io' }
});
}

Так что здесь я проверяю, если И.О. существует, то, скорее всего, сокет не работает.

Но можем ли мы связать обратный вызов, как мы можем сделать с socket.io:
Пример из документа socket.io

const socket = io('http://localhost');

console.log(socket.id); // undefined

socket.on('connect', () => {
console.log(socket.id); // 'here we can get socket id'
});

Причина, по которой мне нужен обратный вызов, заключается в том, чтобы получить идентификатор сокета и инициировать другие сценарии.

1

Решение

Глядя глубже в исходный код эха laravel, я обнаружил, что есть on связыватель событий, который мы не можем вызвать сразу echo.on('connect', ...), Но у нас есть доступ к разъему и фактическому сокету, так что вот решение:

 if(typeof(io) != 'undefined'){ //check if io loaded
//init Echo
echo = new Echo({
broadcaster: 'socket.io',
host: { path: '/socket.io' }
});
}
echo.connector.socket.on('connect', function(){
console.log('connected', echo.socketId());
});
echo.connector.socket.on('disconnect', function(){
console.log('disconnected');
});
echo.connector.socket.on('reconnecting', function(attemptNumber){
console.log('reconnecting', attemptNumber);
});
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]