Я смотрю в 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'
});
Причина, по которой мне нужен обратный вызов, заключается в том, чтобы получить идентификатор сокета и инициировать другие сценарии.
Глядя глубже в исходный код эха 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);
});
Других решений пока нет …