Socket.io发射和侦听器功能在Android上不起作用

时间:2019-09-30 19:13:57

标签: java android sockets socket.io

我正在尝试使用Socket.IO将Android客户端连接到Node JS服务器。连接成功,但是我无法发出或收听任何数据更改。

这是我的Android代码...

apt-get install -y snapd libsnappy1

套接字完美连接到服务器。我在日志中收到“已连接”消息。但是该“消息”事件不起作用。我究竟做错了什么? ; _;

1 个答案:

答案 0 :(得分:0)

您需要使用OkHttp。将此添加到您的Gradle依赖项:

implementation("com.squareup.okhttp3:okhttp:4.8.1")

然后将其添加为活动或片段类中的字段:

private var socket: Socket? = null

然后这就是您如何在活动或片段的onCreate()方法中获取套接字实例的方式:

val okHttpClient: OkHttpClient = OkHttpClient.Builder().build()

IO.setDefaultOkHttpWebSocketFactory(okHttpClient)
IO.setDefaultOkHttpCallFactory(okHttpClient)

val opts = IO.Options()
opts.apply {
    callFactory = okHttpClient
    webSocketFactory = okHttpClient
}

socket = try {
    IO.socket("http://10.0.2.2:3000", opts)
} catch (e: URISyntaxException) {
    null
}

(此代码用科特林语言编写)

然后一切正常。