繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM