关于在Android端如何开启WebSocket
来源:互联网 发布:matlab 矩阵保存excel 编辑:程序博客网 时间:2024/06/04 17:58
关于这方面的资料网上有很多,在自己做项目的时候,发现不同的后台处理方式,直接导致android端的链接成功与否。后来终于在GitHub上找到了一个可以与后台成功连接的demo,整理成一个service就可以直接用。
1.先在build.gradle中导入
compile (‘io.socket:socket.io-client:0.8.3’) {
exclude group: ‘org.json’, module: ‘json’
}
2.直接开启service就可以用,记得在AndroidManifest中注册自己的service
Intent intent = new Intent(this, WebSocketService.class); startService(intent);
public class WebSocketService extends Service{ private Socket mSocket; private final String TAG = this.getClass().getSimpleName(); @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i(TAG,"创建WebSocket:"); initWebSocket(); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { super.onDestroy(); mSocket.disconnect(); /*可以指定关闭单个Emitter.Listener,也可以一次性全部关闭*/// mSocket.off(Socket.EVENT_CONNECT, onConnect);// mSocket.off(Socket.EVENT_DISCONNECT, onDisconnect);// mSocket.off(Socket.EVENT_CONNECT_ERROR, onConnectError);// mSocket.off(Socket.EVENT_CONNECT_TIMEOUT, onConnectError); mSocket.off(); Log.i(TAG,"WebSocket销毁了:"); } private void initWebSocket() { if (mSocket == null) { try { /*输入相对于的地址,开头肯定是http,否则会报错*/ mSocket = IO.socket("http://lin.f3322.net:82"); } catch (URISyntaxException e) { e.printStackTrace(); } mSocket.on(Socket.EVENT_CONNECT, onConnect); mSocket.on(Socket.EVENT_DISCONNECT, onDisconnect); mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError); mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError); mSocket.on("/push/lin/40", new Emitter.Listener() { //监听回调函数 @Override public void call(Object... args) { } }); mSocket.connect(); } } private Emitter.Listener onConnect = new Emitter.Listener() { @Override public void call(Object... args) { Log.i(TAG," WebSocket连接:" + Arrays.toString(args)); } }; private Emitter.Listener onDisconnect = new Emitter.Listener() { @Override public void call(Object... args) { Log.i(TAG," WebSocket断开:" + Arrays.toString(args)); } }; private Emitter.Listener onConnectError = new Emitter.Listener() { @Override public void call(Object... args) { Log.i(TAG,"WebSocket连接异常:" + Arrays.toString(args)); /*如果想长连接,则不用关闭service*/ stopSelf(); } };}
参考的GitHub上的demo:https://github.com/nkzawa/socket.io-android-chat
阅读全文
0 0
- 关于在Android端如何开启WebSocket
- 关于台式机如何在UEFI BIOS中开启VT
- 关于PhpStorm如何在wamp64环境下开启调试
- Android 关于WebSocket的应用
- 如何在android lolipop中开启google now
- 关于Websocket在安卓上的实现-autobahn
- 如何在Spring中配置Websocket
- websocket如何知道mysql数据在变更
- 如何在服务器开启PathInfo
- android websocket client 如何调用autobahn.jar
- 关于如何使mongodb数据库在命令行后台一直开启的问题
- 关于WebSocket
- 关于websocket
- 关于websocket
- 关于websocket
- 关于websocket
- android开发:如何开启线程
- php开启websocket端口程序开启模式
- WindView
- 笨办法15读取文件
- 105. Construct Binary Tree from Preorder and Inorder Traversal
- loadrunner:Web(HTTP-HTML)协议的两种录制方式
- JQuery中的trim()方法去掉前后空格
- 关于在Android端如何开启WebSocket
- eclipse工程中的.classpath文件
- Nginx配置支持pathinfo
- linux怎样完全删除用户(即使在user被占用时)
- Android Studio 工程中若干小问题总结
- UVa-127 "Accordian" Patience(栈+模拟链表)
- HDU 1569 方格取数(2)(最大独立点集)
- 如何搭建直播平台?低延时连麦+人工智能让互动升级
- 好的blog记录