in src/main/java/com/alibaba/cloudapi/sdk/client/WebSocketApiClient.java [382:414]
protected void sendAsyncRequest(final ApiRequest apiRequest , final ApiCallback apiCallback){
checkIsInit();
synchronized (connectionLock) {
if (null != connectLatch.getObj() && connectLatch.getObj().getCount() == 1) {
try {
connectLatch.getObj().await(10, TimeUnit.SECONDS);
} catch (InterruptedException ex) {
throw new SdkException("WebSocket connect server failed ", ex);
} finally {
connectLatch.setObj(null);
}
}
if (status == WebSocketConnectStatus.LOST_CONNECTION) {
apiCallback.onFailure(apiRequest, new SdkException("WebSocket conection lost , connecting"));
return;
}
if (WebSocketApiType.COMMON != apiRequest.getWebSocketApiType()) {
if(!preSendWebsocketCommandApi(apiRequest , apiCallback)) {
return;
}
}
Integer seqNumber = seq.getAndIncrement();
apiRequest.addHeader(SdkConstant.CLOUDAPI_X_CA_SEQ, seqNumber.toString());
callbackManager.add(seqNumber, new ApiContext(apiCallback, apiRequest));
String request = buildRequest(apiRequest);
webSocketRef.getObj().send(request);
}
}