基于Socket.IO实现Android聊天功能代码示例

所属分类: 软件编程 / Android 阅读数: 30
收藏 0 赞 0 分享

一、简述

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

该种官方介绍看起来有点懵逼,简而言之就是:客户端可通过Socket.IO与服务器建立实时通信管道

二、应用

该下就是介绍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://socketio-chat.now.sh/

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

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

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

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对象建立连接

至此,我们的管道铺设工作就已经完成了,接下来我们只需要打开管道的开关,那么客户端与服务器之间就可以互通互信:

mSocket.connect();

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

2.5 简单使用

此时,如果我们要向服务器发送消息,要怎么实现呢?Socket.IO提供了如下操作:

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整个通信过程就完成啦,于我们而言,是不是简单易用。

三、完整源码奉上

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

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

Android中加入名片扫描功能实例代码

这篇文章主要介绍了Android中加入名片扫描功能实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android仿微信发表说说实现拍照、多图上传功能

这篇文章主要为大家详细介绍了Android仿微信发表说说实现拍照、多图上传功能,使用Retrofit2.0技术,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

设置Android系统永不锁屏永不休眠的方法

在进行Android系统开发的时候,有些特定的情况需要设置系统永不锁屏,永不休眠。本篇文章给大家介绍Android 永不锁屏,开机不锁屏,删除设置中休眠时间选项,需要的朋友一起学习吧
收藏 0 赞 0 分享

Android Retrofit 2.0框架上传图片解决方案

这篇文章主要介绍了Android Retrofit 2.0框架上传一张与多张图片解决方案,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android自定义等待对话框

这篇文章主要为大家详细介绍了Android自定义等待对话框的实现方法,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android中Window添加View的底层原理

这篇文章主要介绍了Android中Window添加View的底层原理,需要的朋友可以参考下
收藏 0 赞 0 分享

Android调用系统默认浏览器访问的方法

这篇文章主要介绍了Android调用系统默认浏览器访问的方法的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发退出程序的方法汇总

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,子窗口B又调用子窗口C,back返回子窗口B后,在B中如何关闭整个Android应用程序呢? 下面脚本之家小编就给大家介绍android开发退出程序的几种方法,感兴趣的朋友参考下吧
收藏 0 赞 0 分享

Android程序开发中单选按钮(RadioGroup)的使用详解

在android程序开发中,无论是单选按钮还是多选按钮都非常的常见,接下来通过本文给大家介绍Android程序开发中单选按钮(RadioGroup)的使用,需要的朋友参考下吧
收藏 0 赞 0 分享

Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中

这篇文章主要介绍了Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中 的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多