简体   繁体   English

Java Socket.IO-client SEVERE:任务抛出异常

[英]Java Socket.IO-client SEVERE: Task threw exception

I try to connect to Web Socket server by using Socket.IO- client Java我尝试使用 Socket.IO-客户端Java 连接到 Web Socket 服务器

First i tried this config:首先我尝试了这个配置:

fun createSocket(): Socket {
    val options = IO.Options()
    options.path = "/ws"
    options.reconnectionAttempts = 1
    val socket = IO.socket("http://93.90.222.147:8087" , options)
    return socket 
}

And got this:得到这个:

在此处输入图像描述

Here i found some hint .在这里我发现了一些提示 After i added:在我添加之后:

    options.transports = arrayOf(WebSocket.NAME)

The new error appear出现新的错误

> SEVERE: Task threw exception
java.lang.RuntimeException: Stub!
    at org.json.JSONObject.<init>(JSONObject.java:115)
    at io.socket.engineio.client.HandshakeData.<init>(HandshakeData.java:16)
    at io.socket.engineio.client.Socket.onPacket(Socket.java:541)
    at io.socket.engineio.client.Socket.access$1000(Socket.java:36)
    at io.socket.engineio.client.Socket$5.call(Socket.java:337)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.engineio.client.Transport.onPacket(Transport.java:124)
    at io.socket.engineio.client.Transport.onData(Transport.java:116)
    at io.socket.engineio.client.transports.WebSocket.access$100(WebSocket.java:23)
    at io.socket.engineio.client.transports.WebSocket$1$2.run(WebSocket.java:73)
    at io.socket.thread.EventThread$2.run(EventThread.java:80)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)
> 
> Exception in thread "EventThread" java.lang.RuntimeException: Stub!
    at org.json.JSONObject.<init>(JSONObject.java:115)
    at io.socket.engineio.client.HandshakeData.<init>(HandshakeData.java:16)
    at io.socket.engineio.client.Socket.onPacket(Socket.java:541)
    at io.socket.engineio.client.Socket.access$1000(Socket.java:36)
    at io.socket.engineio.client.Socket$5.call(Socket.java:337)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.engineio.client.Transport.onPacket(Transport.java:124)
    at io.socket.engineio.client.Transport.onData(Transport.java:116)
    at io.socket.engineio.client.transports.WebSocket.access$100(WebSocket.java:23)
    at io.socket.engineio.client.transports.WebSocket$1$2.run(WebSocket.java:73)
    at io.socket.thread.EventThread$2.run(EventThread.java:80)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)
EVENT_CONNECT_ERROR: [Ljava.lang.Object;@6104f122

This is Minimal reproducible example:这是最小的可重现示例:

fun main() {
    val socket = createSocket()
    socket.on(Socket.EVENT_CONNECT_ERROR) {
        println("EVENT_CONNECT_ERROR: " + it.toString())
    }
    socket.connect()
}

fun createSocket(): Socket {
    val options = IO.Options()
    options.transports = arrayOf(WebSocket.NAME)
    options.path = "/ws"
    options.reconnectionAttempts = 1
    val socket = IO.socket("http://93.90.222.147:8087" , options)
    return socket
}

Do not forget add in gradle不要忘记添加gradle

    implementation ('io.socket:socket.io-client:2.0.1') {
    exclude group: 'org.json', module: 'json'
}

Problem was that I did run this without android device.问题是我确实在没有 android 设备的情况下运行了它。 If I run it in android studio inside some.apk everything is ok.如果我在 android studio 中的 some.apk 中运行它,一切正常。 But if I run inside fun main() I get this error.但是,如果我在 fun main() 中运行,我会收到此错误。 By the way this code works if run it by Idea ide inside main() method.顺便说一句,如果在 main() 方法中通过 Idea ide 运行这段代码,它就可以工作。 This is my final code:这是我的最终代码:

public Socket createSocket2(String token) throws URISyntaxException {
    IO.Options options = new IO.Options();
    options.transports = new String[] {WebSocket.NAME};
    options.path = "/ws";
    options.reconnectionAttempts = 1;
    options.extraHeaders = singletonMap("Authorization", singletonList(token));
    return IO.socket("http://8.8.8.8:8087", options);
}

Don't forget add:不要忘记添加:

<uses-permission android:name="android.permission.INTERNET" />

Hope it will save your time.希望它能节省您的时间。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 socket.io-client java没有连接到服务器 - socket.io-client java not connecting to server 我无法使用Socket.IO-client Java连接到服务器 - I can not connect to server with Socket.IO-client Java 未收到 Angular 8 socket.io-client 2.2.0 和 Java netty-socket.io 消息? - Angular 8 socket.io-client 2.2.0 and Java netty-socket.io message not being received? 在 Socket.io-client 中发送自定义 header - Send custom header in Socket.io-client Java Sockets + socket.io-client (Angular 13) = 连接失败和消息混乱 - Java Sockets + socket.io-client (Angular 13) = Failed connections and scrambled messages 如何使用 Socket.IO-client Java 从 Android 向服务器发送 String 消息? - How send String message to server from Android with Socket.IO-client Java? 在nkzawa socket.iO客户端上添加自定义参数进行握手 - Add custom params on nkzawa socket.iO-client for the handshake socket.io客户端与socket.io服务器0.9.6的连接问题 - Connection problems with the socket.io-client to socket.io server 0.9.6 严重:Servlet [jsp]的Servlet.service()抛出异常java.lang.NumberFormatException - SEVERE: Servlet.service() for servlet [jsp] threw exception java.lang.NumberFormatException Android developpement,Gottox socket.io-java-client:file not fount Exception /socket.io/1/ - Android developpement, Gottox socket.io-java-client: file not fount Exception /socket.io/1/
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM