android 中websocket使用
来源:互联网 发布:wampserver mac版下载 编辑:程序博客网 时间:2024/05/24 02:37
使用的依赖库
compile 'com.neovisionaries:nv-websocket-client:1.30'
public class WsClientToolimplements WebSocketListener {
private static WsClientToolsingleton;
private WebSocket ws;
private static final StringTAG = "WsClientTool";
private List<WsMessageListener>listeners = newArrayList<>();
private String url;
private String token;
private WsClientTool() {
}
public static WsClientTool getSingleton() {
if (singleton== null) {
synchronized (RestfulTools.class) {
if (singleton== null) {
singleton =new WsClientTool();
}
}
}
return singleton;
}
public void addMessageListener(WsMessageListener listener) {
Log.i(TAG,"ws.addMessageListener()");
if(null!= listener && !listeners.contains(listener)) {
listeners.add(listener);
}
}
public void removeMessageListener(WsMessageListener listener) {
if(null!= listener) {
listeners.remove(listener);
}
}
public void connect(String serverUrl, String token) {
url = serverUrl;
this.token= token;
try {
if(null== ws) {
ws = new WebSocketFactory().createSocket(serverUrl);
ws.addHeader("opera-token", token);
ws.setPingInterval(60* 1000);
ws.addListener(this);
Log.i(TAG,"ws.connectAsynchronously() is null="+ws.toString());
} else {
ws = ws.recreate();
Log.i(TAG,"ws.connectAsynchronously() is not null="+ws.toString());
}
ws.connectAsynchronously();
} catch (IOException e) {
e.printStackTrace();
}
}
public void reconnect() {
if(null!= ws && !ws.isOpen()) {
ws.disconnect();
ws = null;
connect(url,token);
}
}
public void disconnect() {
if(null!= ws) {
ws.disconnect();
}
}
public boolean isConnected() {
return null != ws && ws.isOpen();
}
public void sendText(String content) {
if(null!= ws &&ws.isOpen()) {
Log.i(TAG,"wsclient sendText ="+content);
ws.sendText(content);
}
}
@Override
public voidonStateChanged(WebSocket websocket, WebSocketState newState) throws Exception {
Log.i(TAG,"ws.onStateChanged newState="+newState.name());
}
@Override
public voidonConnected(WebSocket websocket, Map<String, List<String>> headers)throws Exception {
Log.d(TAG,"connected");
for (WsMessageListener listener:listeners) {
listener.onConnected();
}
}
@Override
public voidonConnectError(WebSocket websocket, WebSocketException cause) throws Exception {
Log.d(TAG,"connect error");
cause.printStackTrace();
}
@Override
public voidonDisconnected(WebSocket websocket, WebSocketFrame serverCloseFrame, WebSocketFrame clientCloseFrame,boolean closedByServer) throws Exception {
Log.d(TAG,"disconnected");
for (WsMessageListener listener:listeners) {
listener.onDisconnected();
}
}
@Override
public voidonFrame(WebSocket websocket, WebSocketFrame frame) throwsException {
Log.d(TAG,"onFrame: " + frame.toString());
}
@Override
public voidonContinuationFrame(WebSocket websocket, WebSocketFrame frame) throws Exception {
}
@Override
public voidonTextFrame(WebSocket websocket, WebSocketFrame frame) throwsException {
Log.d(TAG,"onTextFrame: " + frame.toString());
}
@Override
public voidonBinaryFrame(WebSocket websocket, WebSocketFrame frame) throws Exception {
}
@Override
public voidonCloseFrame(WebSocket websocket, WebSocketFrame frame) throwsException {
}
@Override
public voidonPingFrame(WebSocket websocket, WebSocketFrame frame) throwsException {
}
@Override
public voidonPongFrame(WebSocket websocket, WebSocketFrame frame) throwsException {
}
@Override
public voidonTextMessage(WebSocket websocket, String text) throwsException {
Log.i(TAG,"onTextMessage: " + text);
for (WsMessageListener listener:listeners) {
listener.onTextMessage(text);
}
}
@Override
public voidonBinaryMessage(WebSocket websocket, byte[] binary)throws Exception {
}
@Override
public voidonSendingFrame(WebSocket websocket, WebSocketFrame frame) throws Exception {
Log.i(TAG,"onSendingFrame");
}
@Override
public voidonFrameSent(WebSocket websocket, WebSocketFrame frame) throwsException {
Log.i(TAG,"onFrameSent");
}
@Override
public voidonFrameUnsent(WebSocket websocket, WebSocketFrame frame) throws Exception {
Log.i(TAG,"onFrameUnsent");
}
@Override
public voidonError(WebSocket websocket, WebSocketException cause) throwsException {
cause.printStackTrace();
Log.i(TAG,"onError");
}
@Override
public voidonFrameError(WebSocket websocket, WebSocketException cause, WebSocketFrame frame)throws Exception {
Log.i(TAG,"onFrameError");
}
@Override
public voidonMessageError(WebSocket websocket, WebSocketException cause, List<WebSocketFrame> frames)throws Exception {
Log.i(TAG,"ws.onMessageError ");
}
@Override
public voidonMessageDecompressionError(WebSocket websocket, WebSocketException cause,byte[] compressed) throws Exception {
cause.printStackTrace();
Log.i(TAG,"ws.onMessageDecompressionError ");
}
@Override
public voidonTextMessageError(WebSocket websocket, WebSocketException cause,byte[] data) throwsException {
Log.i(TAG,"ws.onTextMessageError ");
}
@Override
public voidonSendError(WebSocket websocket, WebSocketException cause, WebSocketFrame frame)throws Exception {
Log.i(TAG,"ws.onSendError ");
}
@Override
public voidonUnexpectedError(WebSocket websocket, WebSocketException cause) throws Exception {
cause.printStackTrace();
Log.i(TAG,"ws.onUnexpectedError ");
}
@Override
public voidhandleCallbackError(WebSocket websocket, Throwable cause) throws Exception {
cause.printStackTrace();
Log.i(TAG,"ws.handleCallbackError ");
}
@Override
public voidonSendingHandshake(WebSocket websocket, String requestLine, List<String[]> headers)throws Exception {
}
}
主要就是发送数据和数据的接收。
- android中使用WebSocket
- Android中使用WebSocket
- android 中websocket使用
- android中使用webSocket通信
- Android 使用Websocket
- Android使用websocket
- android websocket的使用
- Android Websocket 的使用
- Android Websocket+protobuf使用
- cocos中 使用websocket
- android中使用原生WebSocket时产生的bug
- android使用websocket连接服务器
- 在python中使用websocket
- cocos2d-js中使用websocket
- 在SpringMVC中使用WebSocket
- 在express中使用websocket
- 在SpringMVC中使用WebSocket
- cocos中使用 websocket通信
- MyBatis学习笔记(1)—— XML映射文件の查询(select)
- 程序员必备的600个英语词汇合集(3)
- grpclog
- GarsiaWachs算法
- 如何移植gdb到hi3531或hi3535?
- android 中websocket使用
- 连接远程数据库出现ora-12514,监听程序无法识别你所请求的服务
- centos上安装caffe
- win7,hadoop2.5.2实践
- 时钟控制部分产生3种时钟信号:CPU用的FCLK,AHB总线(高级高性能总线)用的HCLK,APB总线(高级外围总线)用的PCLK。 时钟是用来干什么的? 像人的心脏一样,时钟提供给开发板工作的频率
- OA课程--word2013实用技巧大全-目录
- [拓扑] Codeforces #510C. Fox And Names
- 进阶篇:3.1.1)塑胶件-超声波焊接
- oracle统计信息