AndRroid实现基于Java-webSocket的长链接
来源:互联网 发布:制作精美ppt的软件 编辑:程序博客网 时间:2024/05/20 02:23
看过html5的同学都知道,WebSocket protocol 是HTML5一种新的协议。它是实现了浏览器与服务器全双工通信(full-duplex)。HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽并达到实时通讯。
我们实现长链接如果不想自己写,可以使用第三方的开源框架来帮助我们实现,目前比较流行的主要是:
1.基于Java-WebSocket实现长链接
2.基于OkHttp实现长链接
两者的实现方法基本相同,我使用的是java-websocket,具体选择哪个大家可以根据需要自行选择。大家可以访问下面链接去下载java-websocket jar包或者添加依赖。
1.jar包地址:http://download.csdn.net/detail/qq_35980424/9889035
2.github地址:https://github.com/TooTallNate/Java-WebSocket
WebSocketUtils工具类:
public class WebSocketUtils { //WebSocketClient 和 address private WebSocketClient mWebSocketClient; //8585为端口号,根据情况修改 private final String address = "websocket://请求的ip地址:8585"; /**初始化WebSocketClient * @throws URISyntaxException */ public void initSocketClient() throws URISyntaxException { if(mWebSocketClient == null) { mWebSocketClient = new WebSocketClient(new URI(address)) { @Override public void onOpen(ServerHandshake serverHandshake) { Log.e("aaaa", "链接成功"); } @Override public void onMessage(String s) { //服务端消息 Log.e("aaaa", "服务器返回了" + s); } @Override public void onClose(int i, String s, boolean remote) { //连接断开,remote判定是客户端断开还是服务端断开 if (remote) { Log.e("aaaa", "服务器断开链接了"); } else { Log.e("aaaa", "客户端断开链接了"); } } @Override public void onError(Exception e) { Log.e("aaaa", "错误"+e.getMessage()); } }; } } //连接 public void connect() { new Thread(){ @Override public void run() { mWebSocketClient.connect(); } }.start(); } //关闭连接 public void closeConnect() { try { mWebSocketClient.close(); } catch(Exception e) { e.printStackTrace(); } finally { mWebSocketClient = null; } } /** *发送消息 */ public void sendMsg(String msg) { mWebSocketClient.send(msg); }}
我们通常会在Appliction中初始化连接,执行如下方法
/** * 初始化socket */ public void initSoctet() { socketConnect = new WebSocketUtils(); //长连接初始化 try { socketConnect.initSocketClient(); //开始长连接 socketConnect.connect(); } catch (URISyntaxException e) { e.printStackTrace(); } }
如果链接成功会打印出“连接成功”,这时我们就可以调用sendMsg(String msg)方法向服务器发送消息,如果发送成功,我们可以在下面的方法中接收到服务器返回的消息
@Overridepublic void onMessage(String s) { //服务端消息 Log.e("aaaa", "服务器返回了" + s);}
最后记得调用closeConnect()方法关闭连接,释放系统资源。
阅读全文
1 0
- AndRroid实现基于Java-webSocket的长链接
- RPC , netty ,webSocket基于长链接的描述
- 基于spring websocket+sockjs实现的长连接请求
- 基于Spring Websocket+SockJS实现的长连接请求
- 基于Java的WebSocket的实现
- 基于websocket+java聊天系统的实现
- 基于java实现tcp长链接,自定义消息协议
- WebSocket实现长链接原理以及和ajax轮询、long poll的对比
- 基于Java的WebSocket推送
- WebSocket的java实现
- websocket的Java实现
- java WebSocket的实现以及Spring WebSocket
- java与微信小程序实现websocket长连接
- 基于 java nio 长连接实现的聊天室
- tomcat websocket 长连接实现
- okhttp实现websocket长连接
- 基于Tomcat7的websocket的应用实现
- 基于websocket的简易聊天室的实现
- shell脚本积累---`dirname $0`
- Swift
- linux资料、先存下来。
- 控件FlowLayoutPanel异步使用
- AngularJS使用备忘录
- AndRroid实现基于Java-webSocket的长链接
- Android中如何修改ListView分割线的高度与色值
- stanford CoreNLP 命名实体识别NER学习笔记
- 数据分布
- HDU 5534 Partial Tree [完全背包]【动态规划+思维】
- 超出文本部分显示省略号
- 机器学习笔记
- SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤
- linux下Python版HTTP服务器(用于分享文件)