基于Socket.IO实现Android聊天功能代码示例
一、简述
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官方的服务器地址结合实际项目融合而成,扩展性极强,特分享出来,供各位参考。
最后,感谢你的到来,恭喜你,坚持到了最后,该文和源码若有不当之处,请予以斧正。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
Android基于AlarmManager实现用户在线心跳功能示例
-
Java基于中介者模式实现多人聊天室功能示例
-
Python基于TCP实现会聊天的小机器人功能示例
-
Python网络编程基于多线程实现多用户全双工聊天功能示例
-
Android基于自带的DownloadManager实现下载功能示例
-
Android RecycleView 实现左滑上下分层示例代码(自定义功能)
-
Android基于广播事件机制实现简单定时提醒功能代码
-
vue + socket.io实现一个简易聊天室示例代码
-
Android 自定义LineLayout实现满屏任意拖动功能的示例代码
-
Python基于TCP实现会聊天的小机器人功能示例