本例使用以下2个开源库:
implementation 'org.java-websocket:Java-WebSocket:1.3.9'
implementation 'com.koushikdutta.async:androidasync:2.2.1'
1. socket返回数据的回调
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
WebSocket.StringCallback stringCallback = new WebSocket.StringCallback() { public void onStringAvailable(String s) { Log.e("ard", "StringCallback: " + s); // 对服务端返回的 s 进行解析。 } }; DataCallback dataCallback = new DataCallback() { public void onDataAvailable(DataEmitter emitter, ByteBufferList byteBufferList) { Log.e("ard", "DataCallback: " + byteBufferList.peekString()); byteBufferList.recycle(); } }; |
2. socket连接成功的回调
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
AsyncHttpClient.WebSocketConnectCallback callback = new AsyncHttpClient.WebSocketConnectCallback() { @Override public void onCompleted(final Exception e, final WebSocket socket) { Log.e("ard", "websocket callback :" + Thread.currentThread().getName()); if (e != null) { e.printStackTrace(); String message = e.getMessage(); Log.e("ard", "e连接异常:" + message); Toast.makeText(MainActivity.this, "连接服务器Exception:" + e.getMessage(), Toast.LENGTH_SHORT).show(); return; } Log.e("ard", "拿到Socket: " + (null == webSocket ? "没有拿到Socket" : webSocket.hashCode())); if (null != socket) { webSocket = socket; socket.setDataCallback(dataCallback); socket.setStringCallback(stringCallback); socket.send("暗号"); // 阻塞~~~~~~ Log.e("ard", "拿到---Socket: " + (null == socket ? "没有拿到Socket" : socket.hashCode()) + "," + Thread.currentThread().getName()); Toast.makeText(MainActivity.this, "连接服务器成功", Toast.LENGTH_SHORT).show(); // socket的读写~~~ // 通过socket和服务端交互 // socket须及时关闭 } else { Toast.makeText(MainActivity.this, "连接服务器失败", Toast.LENGTH_SHORT).show(); } } }; |
3. 建立连接
1 2 3 4 |
AsyncHttpClient client = AsyncHttpClient.getDefaultInstance(); client.websocket("wssUrl", "", callback); |
end
声明
本文由崔维友 威格灵 cuiweiyou vigiles cuiweiyou 原创,转载请注明出处:http://www.gaohaiyan.com/2279.html
承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设