基于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官方的服务器地址结合实际项目融合而成,扩展性极强,特分享出来,供各位参考。

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

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

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

时间: 2024-09-23 17:20:57

基于Socket.IO实现Android聊天功能代码示例的相关文章

基于socket.io+express实现多房间聊天_node.js

socket.io简介 Socket.IO是一个开源的WebSocket库,它通过Node.js实现WebSocket服务端,同时也提供客户端JS库.Socket.IO支持以事件为基础的实时双向通讯,它可以工作在任何平台.浏览器或移动设备. Socket.IO支持4种协议:WebSocket.htmlfile.xhr-polling.jsonp-polling,它会自动根据浏览器选择适合的通讯方式,从而让开发者可以聚焦到功能的实现而不是平台的兼容性,同时Socket.IO具有不错的稳定性和性能.

一个node+express+socket.io开发的聊天室源码

首先是下载包: npm install express npm install socket.io 建立文件:   开发的聊天室源码-express socket聊天室">   服务器端代码:server.js    代码如下 复制代码 var http=require("http"); var express=require("express"); var sio=require("socket.io"); var app=ex

QQ强制聊天功能代码(加强版,兼容QQ2010)_javascript技巧

有个小的功能,就是能够把QQ号码输入进入,然后点击直接可以和所输入的QQ号码强制聊天.但是由于QQ技术的改变,据说只有企业QQ才可以强制聊天,非企业QQ必须要加为好友才可以实现.核心代码: 复制代码 代码如下: tencent://message/?Menu=yes&uin=12655667&Site=jb51net&Service=300&sigT=45a1e5847943b64c6ff3990f8a9e644d2b31356cb0b4ac6b24663a3c8dd0f8

基于socket.io和node.js搭建即时通信系统_node.js

使用socket.io和nodejs搭建websocket服务器端 socket.io不仅可以搭建客户端的websocket服务,而且支持nodejs服务器端的websocket. 下面让我来介绍一下怎么安装配置nodejs. 进入http://nodejs.org/下载msi文件.一直点next安装.最后文件会自动安装在C:\nodejs目录下. 安装完成后,会自动配置环境环境变量.如果没有自动配置,自己手动在path处加上 ;C:\nodejs\. 安装完成后,需要配置npm来管理node.

Unity3D实现基于Socket通讯的公共聊天室

多个客户端一同使用就是一个简单的公共聊天室.服务端为一个控制台程序使用C#实现,当然,在Unity3D中也相应地使用了C#语言实现客户端,服务端和客户端能实现消息的互通,当服务端接收到某客户端发送过来的消息时将会对客户端列表成员进行广播,这是公共聊天室的最基本的形式.Socket通讯是网络游戏最为基础的知识,因此这个实例能向有志投身于网游行业的初学者提供指导意义. using System; using System.Collections.Generic; using System.Linq;

基于JFace Text Framework构建全功能代码编辑器: 第7部分

Quick Assistant Quick Assistant(快速帮助)的基本用途是为源代码中的错误提供一些快速的解决方案.快速的意思是指这个方案足够简单或者足够模式化,可以由程序帮你自动完成.当然快速帮助是无法解决深层次的问题的,不过一般我们在编写代码的时候,犯的最多的都是一些小错误,所以快速帮助是个非常有用的功能. 在 Java 编辑器中,快速帮助看上去就是下图的样子: 图1. Java 编辑器中的快速帮助 可见,不管是从名字上,还是界面上,快速帮助都非常类似我提过的 Content As

基于JFace Text Framework构建全功能代码编辑器: 第1部分

引言 JFace Text Framework(JFace 文本框架,后面直接简称为 JTF)是 Eclipse 中重要的框架,是其它开发工具的基石之一,比如 JDT (Java Development Tool) 中的 Java 源代码编辑器就是基于它开发的.相信用过 JDT 的人都会对它的源代码编辑器有深刻印象,因为它的很多功能可以让我们很方便的编辑 Java 源代码,比如语法高亮和内容提示等等.所有这些功能都是在 JTF 架的基础上实现的,所以学会使用这个框架对于开发某种语言的编辑工具是至

基于JFace Text Framework构建全功能代码编辑器: 第10部分

Text Formatting Text Formatting(文本格式化)可以快速的将源代码按照预定的规则排版,JTF 只是定义了这个框架,将其发挥到极致的是 JDT.打开 Eclipse 的设置页,找到 General->Java->Code Style->Formatter,你会发现在这里可以编辑名目繁多的格式化选项.JDT 提供的代码格式化功能强大的令人眩目,但本文的目的是介绍这个强大功能下的基础设施. IFormattingStrategy IFormattingStrateg

基于JFace Text Framework构建全功能代码编辑器: 第9部分

Template Template(模版)可以用来快速添加某种固定形式的代码,中间还可以插入参数.对于 Java 编辑器来说,你可以在 Eclipse 的设置中找到相应的属性页,路径是 General->Java->Editor->Templates.这个属性页是Eclipse标准的模版属性页,因为它做的比较完善,所以一般不需要自己写一个. 仔细探索一下这个属性页,尝试编辑一下模版,你可能会发现很多不了解的概念,下面我会一一解释 模版属性 模版包含一些基本属性: Name(名称):这个模