作者:燕歆波
导读:使用webSocket的几个步骤
首先需要导入库:
compile 'org.java-websocket:Java-WebSocket:1.3.6'
然后需要继承WebSocketClient实现其一些方法:
public class JWebSClient extends WebSocketClient {
public JWebSClient(URI serverUri) {
super(serverUri,new Draft_6455());
}
@Override
public void onOpen(ServerHandshake handshakedata) {
Log.e("yxs", "连接打开onOpen"+handshakedata.getHttpStatusMessage());
}
@Override
public void onMessage(String message) {
Log.e("yxs", message);
}
@Override
public void onClose(int code, String reason, boolean remote) {
Log.e("yxs", "关闭 断开连接onClose"+code+"--->"+reason);
}
@Override
public void onError(Exception ex) {
Log.e("yxs", "错误 onError"+ex.getMessage());
}
}
onOpen:连接上socket服务
onMessage:收到socket服务返回的消息
onClose:连接断开
onError:错误异常
准备好socket的服务地址:
private String url = "ws://61.177.38.106:30006/thq-im/im-websocket";
连接socket服务:
private void initSocketClient() {
Uri uri = URI.create(url);
client = new JWebSClient(uri) {
@Override
public void onMessage(String message) {
Log.e("yxs-onMessage", message);
//获取数据,做自己的处理
}
};
connect();
}
connect方法:
private void connect() {
new Thread() {
@Override
public void run() {
try {
client.connectBlocking();
if(client.isOpen()){
Log.e("yxs", "连接成功");
}
} catch (InterruptedException e) {
Log.i("yxs",e.getMessage()+"!!!");
e.printStackTrace();
}
}
}.start();
}
连接成功后,我们可以向服务发送一个反馈:
//发送消息
private void sendMsg(String msg) {
if (null != client) {
client.send(msg);
Log.e("yxs发送的消息", msg);
}
}
然后再页面销毁时,断开连接:
private void closeConnect() {
try {
if (null != client) {
client.close();
}
} catch (Exception e) {
e.printStackTrace();
Log.e("yxs", "断开连接异常");
} finally {
client = null;
}
}