2017-09-22 9 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); 
}); 
関連する問題