Android 上的 WebSockets 与 Android 中的 socket.io

Posted

技术标签:

【中文标题】Android 上的 WebSockets 与 Android 中的 socket.io【英文标题】:WebSockets on Android with socket.io in Android 【发布时间】:2018-04-18 12:43:22 【问题描述】:

我希望通过新的基于 android 的客户端应用程序来利用我的 NodeJS+SocketIO 服务器应用程序。目前我在 Android 中为 Websockets 使用 okhttp3。但我想将 WebSockets 与 socket.io 一起使用。

有没有其他人使用 WebSocket 对 SocketIO 进行过此类库工作。所以请帮助我。

【问题讨论】:

【参考方案1】:

只需将以下依赖项添加到您的 Android build.gradle 文件中:

compile('io.socket:socket.io-client:x.x.x')  //replace x.x.x by 0.8.3 or newer version
    exclude group: 'org.json', module: 'json'

它完美适用于 0.8.3 版本的 Node.js + Socket.io。

套接字singleton 类:

public class Socket 
    private static final String TAG = Socket.class.getSimpleName();
    private static final String SOCKET_URI = "your_domain";
    private static final String SOCKET_PATH = "/your_path";
    private static final String[] TRANSPORTS = 
        "websocket"
    ;
    private static io.socket.client.Socket instance;

    /**
     * @return socket instance
     */
    public static io.socket.client.Socket getInstance() 
        if (instance == null) 
            try 
                final IO.Options options = new IO.Options();
                options.path = SOCKET_PATH;
                options.transports = TRANSPORTS;
                instance = IO.socket(SOCKET_URI, options);
             catch (final URISyntaxException e) 
                Log.e(TAG, e.toString());
            
        
        return instance;
    

基本用法,onConnect事件:

Socket socket = Socket.getInstance();

private Emitter.Listener onConnect = new Emitter.Listener() 
    @Override
    public void call(final Object... args) 
        //Socket on connect callback
    
;
socket.on("connect", onConnect);
socket.connect();

欲了解更多信息,请访问开发者 Github page。

【讨论】:

你好@AlexTa,但是你有任何关于Android中带有socket.io的WebSocket的例子吗?谢谢。 @SumitPansuriya 我已经更新了我的答案,希望对您有所帮助 @SumitPansuriya 你试过这个答案吗?有用吗??我收到连接错误!

以上是关于Android 上的 WebSockets 与 Android 中的 socket.io的主要内容,如果未能解决你的问题,请参考以下文章

Android 下的 Websockets 与 GCM:电池使用情况?

Elastic Beanstalk 上的 WebSockets 与 Docker

Android WebView 和 WebSockets / Paho.MQTT

使用 Native Sockets 在 Android 中实现 WebSockets

Windows 上的 nodejs 和 websockets

WebSocketChannelException: HandshakeException - Flutter 应用程序与自定义服务器上的 Laravel Websockets 使用 Cpanel 验