使用Laravel Echo加入频道时,如何判断身份验证是否失败?

使用Laravel Echo加入频道时,如何判断身份验证是否失败?,laravel,socket.io,laravel-echo,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'); 这里,.chann

当我使用
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

您可以在连接器上绑定
connect\u error
事件以捕获任何连接错误

例如:

var obj = Echo.channel('some-channel-that-always-fails-authentication');
Echo.connector.socket.on('connect_error',函数(error){
//处理错误
});
然后,当您加入一个频道时:

Echo.private('some-channel-that-always-fails-authentication');
它将触发句柄回调


对于

Hm,我认为您可能指的是
Echo.channel('some-channel-that-always-fails-authentication').socket.on('connect_error',function(error){…})
(注意
.socket
部分)或
Echo.channel('some-channel-that-always-fails-authentication')。侦听('connect_error',function(error){…})
因为Echo使用
.listen()
而socket.io使用
.on()
。不管怎样,当它无法验证时,它似乎仍然没有调用该函数…@fronzee看一下我的更新。刚刚在我本地的机器上测试过,应该可以正常工作。改为绑定连接器上的事件。事件已正确绑定,但似乎身份验证错误并未触发
connect\u错误