gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:08:04 26 4
gpt4 key购买 nike

我正在尝试使用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")
然后将此添加为 Activity 或片段类中的字段:
private var socket: Socket? = null
然后这就是您如何在 Activity 或片段的 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 语言编写的)
然后,一切都应该正常工作。

关于java - Socket.io发射和监听器功能在Android上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58173980/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com