首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有开火的事件?在服务器上使用java socket.io client & netty-socketio

没有开火的事件?在服务器上使用java socket.io client & netty-socketio
EN

Stack Overflow用户
提问于 2018-04-11 20:49:52
回答 1查看 1.1K关注 0票数 0

我知道客户端和服务器正在连接,因为我的连接/断开事件正在触发。但是,我的自定义事件不是。我在服务器上使用socket.io java客户端和netty-socketio。我通常使用无缝工作的socket.io javascript库,所以我有点不知道为什么会发生这种情况。这是用科特林写的。

客户端

代码语言:javascript
复制
fun connectToServer(ipAddress : String)
    {
        socket = IO.socket("$ipAddress")

        socket!!.on(Socket.EVENT_CONNECT) {  obj ->


            println("Connected To Server!!!")

        }.on(EventNames.signOn) { obj ->

            println(EventNames.signOn)
            //cast value to string from server, hope for encrypted password
            val encryptedPassword = obj[0] as String


            when(encryptedPassword)
            {
                "no user" -> {

                }

                else -> {

                    val result = encryptedPassword!!.split("OR")
                    val isMatch = passwordTextField.text == dataProcessing.Encryption3().decryptValue("decrypt", result[0],result[1])

                    if(isMatch)
                    {

                    }
                }
            }

            println("Encrypted Password: "+encryptedPassword)
        }

//        socket!!.on(Socket.EVENT_DISCONNECT, object : Emitter.Listener {
//
//            override fun call(vararg args: Any) {}
//
//        })


        socket!!.connect()
//        socket!!.open()

//        socket!!.emit(Socket.EVENT_CONNECT, "Hello!")


        socket!!.send("hey")
       socket!!.emit(EventNames.requestClientSignOn, usernameTextField.text)

    }

服务器端

代码语言:javascript
复制
@Throws(InterruptedException::class, UnsupportedEncodingException::class)

    fun server()
    {
        val config = Configuration()
        config.setHostname("localhost")
        config.setPort(PORT)
        server = SocketIOServer(config)

        server!!.addConnectListener {
            println("Hello World!")
        }


            server!!.addEventListener(EventNames.requestClientSignOn, String::class.java) { client, data, ackRequest ->

               println("Hello from  requestClientSignOn..")

        }
        server!!.addDisconnectListener {

                    println("Client Disconnecting...")

        }

        server!!.addConnectListener {

            println("client connected!! client: $it")
        }

        server!!.start()
EN

回答 1

Stack Overflow用户

发布于 2018-04-11 23:49:04

不能在事件侦听器中使用lambda表达式,在服务器上使用netty-socketio。

使用传统的EventListener解决了这一问题。我还将服务器转换为Kotlin,因为使用演示项目作为参考比较容易。

代码语言:javascript
复制
server.addEventListener(EventNames.requestClientSignOn, String.class, new DataListener<String>() {


            @Override
            public void onData(SocketIOClient client, String username, AckRequest ackRequest) {


                String isEncryptedPassword = new KOTS_EmployeeManager().getKOTS_User(KOTS_EmployeeManager.kotsUserType.CLIENT, username)

                if(isEncryptedPassword != null)
                {
                    //send back ack with encrypted password
                    ackRequest.sendAckData(isEncryptedPassword);

                }else{
                    //send back ack with no user string
                    ackRequest.sendAckData("no user");
                }
            }

        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49784239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档