android中使用webSocket通信
来源:互联网 发布:云杉网络监控 编辑:程序博客网 时间:2024/06/05 03:32
概述
最近公司项目准备使用WebSocket实现消息推送功能,在网上搜了一下几个支持WebSocket的框架,在使用框架之前简单说一下我对WebSocket的理解:同HTTP协议相似,也是一种协议,我们知道,每种协议有他的长处和短处,HTTP适合接口通信、单次通信,但是如果是聊天这种频繁的通信且不只是客户端请求服务端要求双方都能够给对方发消息的使用HTTP就不怎么合适了,像WebSocket,服务器和客户端建立连接之后就可以自由的通信,双方都可以发送消息,非常爽。这就是我理解他们的区别,值得一提的是,WebSocket也是需要客户端和服务器建立连接,连接的这部分使用的是HTTP的,但是后面的通信部分就和HTTP无关了,有兴趣的自己百度去深究,下面我说一下我调试时使用了几个框架(不清楚哪个好哪个差。。)
1. AndroidAsyn
GitHub地址:https://github.com/koush/AndroidAsync
使用:
Gradle:dependencies { compile 'com.koushikdutta.async:androidasync:2.+'}
使用方式:
AsyncHttpClient.getDefaultInstance().websocket( "ws://192.168.250.38:8181",// webSocket地址 "8181",// 端口 new AsyncHttpClient.WebSocketConnectCallback() { @Override public void onCompleted(Exception ex, WebSocket webSocket) { if (ex != null) { ex.printStackTrace(); return; } webSocket.send("a string");// 发送消息的方法 webSocket.send(new byte[10]); webSocket.setStringCallback(new WebSocket.StringCallback() { public void onStringAvailable(String s) { Log.i(TAG, "onStringAvailable: " + s); } }); webSocket.setDataCallback(new DataCallback() { public void onDataAvailable(DataEmitter emitter, ByteBufferList byteBufferList) { System.out.println("I got some bytes!"); // note that this data has been read byteBufferList.recycle(); } }); } });
多么简单粗暴的使用。。。
2.autobahn
官网:http://autobahn.ws/android/,下到jar包放项目里面就好了
使用:
private WebSocketConnection mConnect = new WebSocketConnection(); String url = "ws://192.168.250.38:8181/"; public void init() { try { mConnect.connect(url, new WebSocketHandler() { @Override public void onOpen() { Log.i(TAG, "onOpen: "); } @Override public void onTextMessage(String payload) { Log.i(TAG, "onTextMessage: "+payload); } @Override public void onClose(int code, String reason) { Log.i(TAG, "onClose: " + code + "|" + reason); } }); } catch (WebSocketException e) { e.printStackTrace(); } }
同样简单粗暴到不行。。。
3.java-webSocket
GitHub地址:https://github.com/TooTallNate/Java-WebSocket
使用:
private String address = "ws://192.168.250.38:8181/"; private URI uri; private static final String TAG = "JavaWebSocket"; public void initSockect() { try { uri = new URI(address); } catch (URISyntaxException e) { e.printStackTrace(); } if (null == mWebSocketClient) { mWebSocketClient = new WebSocketClient(uri) { @Override public void onOpen(ServerHandshake serverHandshake) { Log.i(TAG, "onOpen: "); } @Override public void onMessage(String s) { Log.i(TAG, "onMessage: " + s); } @Override public void onClose(int i, String s, boolean b) { Log.i(TAG, "onClose: "); } @Override public void onError(Exception e) { Log.i(TAG, "onError: "); } }; mWebSocketClient.connect(); } }
依然这么。。简单粗暴。。
4.Netty
官网:http://netty.io/
说明:恕在下无能,其实netty是我最想使用的!它很有名,且它的使用方式,封装方式都是我觉得很好的,而且看了一下网上的性能测试,netty是又快又准,但是网上找不到比较好的关于netty实现webSocket的例子啊,泪崩,试了好几种都不行,有大神会用的希望能教下我。。。
- android中使用webSocket通信
- cocos中使用 websocket通信
- android中使用WebSocket
- Android中使用WebSocket
- android 中websocket使用
- Android探索之旅(第十七篇)Android中使用webSocket保持长连接通信
- Spring项目中使用webservice实现h5的websocket通信
- Android 使用Websocket
- Android使用websocket
- android websocket的使用
- Android Websocket 的使用
- Android Websocket+protobuf使用
- cocos中 使用websocket
- Html5和WebSocket----使用WebSocket实现即时通信
- android中使用原生WebSocket时产生的bug
- android利用websocket协议与服务器通信
- Android WebSocket通信通过Service来绑定
- 基于WebSocket的Android与服务端通信
- UESTC 1091 秋实大哥の恋爱物语
- Android状态栏动态显示和隐藏
- __init__.py文件的作用
- BZOJ 1009 [HNOI 2008] GT考试
- 《神经网络与深度学习》(Michael Nielsen)1.6节完整程序解析
- android中使用webSocket通信
- 玩转EXCEL系列透视表实现按月份汇总数据
- 营销理念-5大分析法简单介绍
- 面向对象
- react-bits:JSX扩展属性
- LogcatFileManager类 收集BUG Log日志
- memcached与redis实现的对比
- ios学习第二天(一)对象之字符串NSString和NSMutableString
- Entity Framework 4.1 Code First学习