【问题标题】:How to use Socket.IO in android kotlin如何在 android kotlin 中使用 Socket.IO
【发布时间】:2019-02-04 08:34:49
【问题描述】:

在我的应用程序中,我想使用 Socket.io,为此我添加了下面的库并编写了下面的代码。
但是当运行应用程序并点击 button 时不会显示任何事件!
我使用 kotlin 编写 android 应用程序。

点击button后,应该会显示textView中的socket状态,但不显示任何状态!

套接字库:

compile 'com.github.nkzawa:socket.io-client:0.5.2'

我的代码:

class SocketActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_socket)

        val opts = IO.Options()
        opts.query = "token=${Constants.BIDZILA_TOKEN}"
        var socket = IO.socket(Constants.BIDZILA_SOCKET, opts)

        btnSend.setOnClickListener {
            socket.connect()

            Handler(Looper.getMainLooper()).postDelayed(
                { socket?.on(Socket.EVENT_CONNECT) {
                    Log.d("SocketLog", "==============================CONNECTED")
                    socket_stateTxt.text = socket.connected().toString()
                }?.on(Socket.EVENT_DISCONNECT) {
                    Log.d("SocketLog", "==============================OFF")
                    socket_stateTxt.text = socket.connected().toString()
                } },
                2000
            )
        }
    }
}

我该如何解决?

【问题讨论】:

  • 我不确定socket.connect() 是否是异步的,但是你不能在Android 的主线程上进行网络连接。您是否还在清单中添加了所有相关权限?您也可以使用 runOnUiThread 而不是 Handler(Looper.getMainLooper()).postDelayed

标签: android kotlin socket.io


【解决方案1】:

我正在建立这样的连接:

private var socket = IO.socket("<YOUR_URL>")
                socket.let {
                    it!!.connect()
                    .on(Socket.EVENT_CONNECT) {
                        Log.d("SignallingClient", "Socket connected!!!!!")
                    }
}

【讨论】:

  • 别用!!应该是 socket?.let {}
猜你喜欢
  • 1970-01-01
  • 2016-02-22
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-14
相关资源
最近更新 更多