为什么不调用 android 端的 socket.io 侦听器?

我为用户身份验证编写套接字中间件,但我不知道我的问题是什么!在 android 端“未经授权”事件未调用。


服务器端 :


async function (socket, next) {


    

    if (socket.handshake.query && socket.handshake.query.token) {

        jwt.verify(socket.handshake.query.token, process.env.SECRET_JWT_KEY, function (err, decoded) {


            if (err) {

                socket.emit( "unauthorized",  "unauthorized user") <==send to sender you'r authentication is failed 

                console.log("Query: ", "unauthorized");    <==This line is lunched

                return next(new Error('Authentication error'));

            }

            socket.decoded = decoded;

            next();

        });

    } else {

        next(new Error('Authentication error'));

    }


客户端 :


   val socket = IO.socket("http://192.168.1.6:3000", IO.Options().apply {

                path = "/sockets/chat"

                query = "token=wrongtoken"

            })


  socket.on("unauthorized", object : Emitter.Listener { <== THIS NOT LUNCED!!

                override fun call(vararg args: Any?) {

                  println("user authentication failed" )

                }

            }


鸿蒙传说
浏览 110回答 2
2回答

qq_遁去的一_1

终于找到了解决方案,在抛出错误时无需从中间件发出,您可以在 Android 客户端中获取预定义事件,如下所示:socket.on(Socket.EVENT_ERROR)&nbsp;{&nbsp;args&nbsp;->&nbsp;println(args.contentToString())&nbsp;}

蛊毒传说

我认为您需要先通过在 apply 块中调用这一行来连接到套接字this.connect()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript