gpt4 book ai didi

android - socket.io - 无法在 Android 客户端中接收 "next(new Error())"事件?

转载 作者:行者123 更新时间:2023-11-29 19:05:33 26 4
gpt4 key购买 nike

在我的 node JS 后端中,我对我的 socket.io 进行了一些非常简单的身份验证

io.use(async function (socket, next) {
try {
socket.decoded = await db.verifyAuthToken(socket.handshake.query.token, io.secret);
next();
}
catch (err) {
console.error("Socket error validating JWT: " + err);
socket.disconnect();
next(new Error("Socket auth error: No token provided"));
}
});

因此根据我的日志,错误已被成功捕获并处理。在我的客户端 (Android) 中,我有 errorconnect_error 事件的监听器:

mSocket.on("error", new Emitter.Listener() {
@Override
public void call(Object... args) {
Log.e(this.getClass().getName(), Arrays.toString(args));
}
});

mSocket.on("connect_error", new Emitter.Listener() {
@Override
public void call(Object... args) {
Log.e(this.getClass().getName(), Arrays.toString(args));
}
});

但是,在调试之后,我意识到当我的后端执行 next(new Error()) 调用时,这些事件都没有被调用。这里有什么问题?我希望我的客户能够成功收到此错误。套接字在发出/接收事件时正常工作。

最佳答案

我认为问题在于您在调用 next() 函数之前调用了 socket.disconnect()。如果您刚刚断开所有套接字,客户端将如何接收错误事件?

如果您在客户端中监听 "disconnect",我想您会在它出错时得到一些信息。因为您实际上选择断开连接,所以它不会是 "connect_error" 事件。所以我想您将不得不选择捕获所有断开连接,或者在不主动断开连接的情况下处理错误。

关于android - socket.io - 无法在 Android 客户端中接收 "next(new Error())"事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47382682/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com