![](/img/trans.png)
[英]Socket.io 0.9 emit respond on Android, using Gottox/socket.io-java-client
[英]Socket.io emit and listener functions not working on Android
我正在尝试使用 Socket.IO 将我的 Android 客户端连接到 Node JS 服务器。 连接成功,但我无法发出或收听任何数据更改。
这是我的 Android 代码...
socket = IO.socket("http://192.168.0.101:3000");
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("Connected");
socket.emit("message","test");
}
}).on("message", new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("Message : "+args[0]);
}
}).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("Socket disconnected");
}
}).on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("Error In Socket Connection "+args[0]);
}
});
socket.connect();
套接字完美连接到服务器。 我在日志中收到“已连接”消息。 但是那个“消息”事件不起作用。 我究竟做错了什么? ;_;
您需要使用 OkHttp。 将此添加到您的 Gradle 依赖项中:
implementation("com.squareup.okhttp3:okhttp:4.8.1")
然后将此作为字段添加到活动或片段 class 中:
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
}
(此代码用kotlin语言编写)
然后一切都应该正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.