class MyOkHttpClient extends OkHttpClient {
@Override
public WebSocket newWebSocket(Request request, final WebSocketListener listener) {
WebSocketListener webSocketListener = new WebSocketListener() {
public void onOpen(WebSocket webSocket, Response response) {
listener.onOpen(webSocket, response);
}
public void onMessage(WebSocket webSocket, String text) {
int index = text.indexOf("[\"transinfo");
if (!TextUtils.isEmpty(text) && index < 10 && index > 0) {
try {
String be = text.substring(0, text.indexOf("["));
String af = text.substring(text.indexOf("["));
String bb = be + "[\"test\",{\"data\":[" + af + "]}]";
listener.onMessage(webSocket, bb);
} catch (Exception e) {
e.printStackTrace();
}
} else {
listener.onMessage(webSocket, text);
}
}
public void onMessage(WebSocket webSocket, ByteString bytes) {
listener.onMessage(webSocket, bytes);
Log.d("TTTT", "onMessage bytes==>" + bytes.toString());
}
public void onClosing(WebSocket webSocket, int code, String reason) {
listener.onClosing(webSocket, code, reason);
}
public void onClosed(WebSocket webSocket, int code, String reason) {
listener.onClosed(webSocket, code, reason);
}
public void onFailure(WebSocket webSocket, Throwable t, @Nullable Response response) {
listener.onFailure(webSocket, t, response);
}
};
RealWebSocket webSocket = new RealWebSocket(request, webSocketListener, new Random(), pingIntervalMillis());
webSocket.connect(this);
return webSocket;
}
}
这里将所有以transinfo开头的事件全部转化为test事件。
- 配置 io.socket的webSocketFactory
IO.Options opts = new IO.Options();
MyOkHttpClient aa = new MyOkHttpClient();
aa.newBuilder().proxy(Proxy.NO_PROXY);
opts.webSocketFactory = aa;
opts.query = query;
opts.transports = new String[]{"websocket"};
mSocket = IO.socket(url, opts);
mSocket.off();
listenSignalEvents();
mSocket.connect();
mSocket.on("test", new Socket.Listener() {
@Override
public void call(Object... args) {
LogUtil.e("aaaaaaa");
LogUtil.e(args[0].toString());
}
});