2017-09-22 1 views
0

나는 사용자/방문자가 성공하거나 소켓에 연결하지 때 콜백을 바인딩하는 방법을 찾을 수 없습니다Laravel 에코 콜백

그러나 (커넥터로 socket.io로) Laravel 에코로 찾고 있어요 (채널이 아님), 일반적으로 연결되어있는 경우. 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' 
}); 

내가 콜백가 소켓 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); 
});