Android SocketIOClient 错误:"方案'ws'未注册



我有一个node.js/socket.io服务器,我想创建一个Android应用程序来通过websockets进行通信。我找到了一个图书馆:https://github.com/koush/android-websockets但是当我尝试使用示例代码(Socket.IO 用法(时:

SocketIOClient client = new SocketIOClient(URI.create("ws://myIP:port"), new SocketIOClient.Handler() {
    String TAG = "WebSocket Handler";
    @Override
    public void onConnect() {
            Log.d(TAG, "Connected!");
    }
    @Override
    public void on(String event, JSONArray arguments) {
        Log.d(TAG, String.format("Got event %s: %s", event, arguments.toString()));
    }
    @Override
    public void onDisconnect(int code, String reason) {
        Log.d(TAG, String.format("Disconnected! Code: %d Reason: %s", code, reason));
    }
    @Override
    public void onError(Exception error) {
        Log.e(TAG, "Error!", error);
    }
});
client.connect();

(使用 IP 和端口,或网址:端口(发生以下错误:

Error!
05-19 18:03:56.065: E/WebSocket Handler(629): java.lang.IllegalStateException: Scheme 'ws' not registered.
05-19 18:03:56.065: E/WebSocket Handler(629):   at org.apache.http.conn.scheme.SchemeRegistry.getScheme(SchemeRegistry.java:80)
05-19 18:03:56.065: E/WebSocket Handler(629):   at org.apache.http.impl.conn.DefaultHttpRoutePlanner.determineRoute(DefaultHttpRoutePlanner.java:107)
05-19 18:03:56.065: E/WebSocket Handler(629):   at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:565)
05-19 18:03:56.065: E/WebSocket Handler(629):   at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:292)
05-19 18:03:56.065: E/WebSocket Handler(629):   at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
05-19 18:03:56.065: E/WebSocket Handler(629):   at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
05-19 18:03:56.065: E/WebSocket Handler(629):   at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
05-19 18:03:56.065: E/WebSocket Handler(629):   at android.net.http.AndroidHttpClient.execute(AndroidHttpClient.java:243)
05-19 18:03:56.065: E/WebSocket Handler(629):   at com.codebutler.android_websockets.SocketIOClient.downloadUriAsString(SocketIOClient.java:48)
05-19 18:03:56.065: E/WebSocket Handler(629):   at com.codebutler.android_websockets.SocketIOClient.access$1(SocketIOClient.java:45)
05-19 18:03:56.065: E/WebSocket Handler(629):   at com.codebutler.android_websockets.SocketIOClient$3.run(SocketIOClient.java:200)

我找不到解决方案

https://github.com/koush/android-websockets 自述文件中的示例代码略有误导。将ws://更改为http://,它应该可以正常工作。

同样由于某种原因,它在模拟器中无法正常工作。我在设备中尝试了一下,进行上述更改后似乎可以正常工作。

你知道你的node.js/socket.io服务器是否设置了http侦听器吗?我已经从安卓连接到node.js/socket.io,但不幸的是我没有设置服务器,所以我无法为您提供完整的详细信息。我知道我们的 node.js 文件是使用 http 侦听器设置的,它使客户端能够通过 http 而不是 ws 进行连接。

如果您的服务器设置了http侦听器,则可以尝试使用我使用并且运行良好的其他android socket.io 库(https://github.com/Gottox/socket.io-java-client(。

相关内容

  • 没有找到相关文章

最新更新