基于Socket.IO实现Android聊天功能



1、简述

Socket.IO是一个彻底由JavaScript实现、基于Node.js、支持WebSocket的协议用于实时通讯、跨平台的开源框架,它包括了客户端的JavaScript和服务器端的Node.js。git

该种官方介绍看起来有点懵逼,简而言之就是:github

客户端可经过Socket.IO与服务器创建实时通讯管道

客户端经过Socket.io与服务器创建通讯通道.png

2、应用

该下就是介绍Socket.IO通讯管道的铺设、通讯以及销毁工做。服务器

2.1 引入Socket.io包

compile 'io.socket:socket.io-client:0.8.3'

2.2 实例化Socket对象

服务器地址(该地址为Socket.IO官方测试地址,实际项目中请更换):框架

String CHAT_SERVER_URL = "https://socket-io-chat.now.sh/"

根据服务器地址,实例化Socket对象:socket

Socket mSocket = IO.socket(CHAT_SERVER_URL, options);

其中options是可供用户选择的一些配置参数,部分配置以下:ide

public static class Options extends io.socket.engineio.client.Socket.Options {
    // 是否自动重连
    public boolean reconnection = true;
    // 重连尝试次数
    public int reconnectionAttempts;
    // 重连间隔
    public long reconnectionDelay;
    // 最大链接等待时间
    public long reconnectionDelayMax;
    // 链接超时时间 (ms),设置为-1表示不超时
    public long timeout = 20000;
}

2.3 注册监听

在这里咱们就须要注册一些监听事件,用来监听Socket通讯过程当中产生的一些行为,好比如下是注册Socket链接成功后的监听回调:测试

Emitter.Listener connectListener;
connectListener = new Emitter.Listener() {
            @Override
            public void call(Object... args) {

            }
        };
socket.on(Socket.EVENT_CONNECT, connectListener);

2.4 经过Socket对象创建链接

至此,咱们的管道铺设工做就已经完成了,接下来咱们只须要打开管道的开关,那么客户端与服务器之间就能够互通互信:socket.io

mSocket.connect();

那咱们要如何知道二者之间是否已经链接成功了呢?没错,在2.3 咱们注册过监听,一旦Socket链接成功,就会触发该回调,此时咱们就能够根据项目的实际需求来作相应的处理了。spa

2.5 简单使用

此时,若是咱们要向服务器发送消息,要怎么实现呢?Socket.IO提供了以下操做:.net

mSocket.emit("new message", content);

还能够这样:

mSocket.emit("new message", content, new Ack() {
        @Override
        public void call(Object... args) {
            
        }
    });

2.6 管道的销毁

当咱们不想再使用管道的时候,就须要把管道给销毁,很简单,咱们只须要断开链接以及注销监听便可:

mSocket.disconnect();
mSocket.off(Socket.EVENT_CONNECT, connectListener);

好啦,Socket.IO整个通讯过程就完成啦,于咱们而言,是否是简单易用。

3、完整源码奉上

不知该部分是否是众望所归(哈哈~),该份源码是基于Socket.IO官方的服务器地址结合实际项目融合而成,扩展性极强,特分享出来,供各位参考。

基于Socket.IO实现Android聊天功能

最后,感谢你的到来,恭喜你,坚持到了最后,该文和源码如有不当之处,请予以斧正。


相关文章
相关标签/搜索