【发布时间】: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。