使用Laravel Echo加入频道时,如何得知验证失败?

时间:2019-11-07 19:31:03

标签: laravel socket.io laravel-echo

当我使用Echo.channel(channelName)Echo.join(channelName)Echo.private(channelName),然后是.listen()加入频道时,如何确定服务器端的身份验证是否失败?似乎上述所有函数都返回一个js对象,该对象出于所有意图和目的,即使未连接,也看起来像已连接。例如:

var obj = Echo.channel('some-channel-that-always-fails-authentication');

此处,.channel()返回一个SocketIoPresenceChannel,其中obj.socket.connected为true。同时,服务器报告用户“无法通过总是失败的某些通道进行身份验证”,这是我所期望的,因为我故意在routes/channels.php中的通道定义中返回false。

1 个答案:

答案 0 :(得分:1)

您可以在连接器上绑定connect_error事件以捕获任何连接错误。

例如:

Echo.connector.socket.on('connect_error', function (error) {
    // Handle the error
});

然后,当您加入频道时:

Echo.private('some-channel-that-always-fails-authentication');

它将触发句柄回调。

对于more information about events