my websocket (running test url) automatically resets , calling closingCallback
Hi I get this SocketException inside closingCallback after a sometime, maybe after aprox 30h running streaming the websocket.
Once I got this 3 times in a row, 1min after each time. I dont know why this happens ? I have deployed to GCP VM instance and I am running my websocket in a seperat Thread.
31-08-2022 17:07:02.087 261952625 [OkHttp https://testnet.binance.vision/...] ERROR c.b.c.c.utils.WebSocketConnection - [Connection 11] Failure java.net.SocketException: Connection reset at java.base/java.net.SocketInputStream.read(SocketInputStream.java:186) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140) at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:478) at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472) at java.base/sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(SSLSocketInputRecord.java:70) at java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1454) at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:1065) at okio.InputStreamSource.read(JvmOkio.kt:90) at okio.AsyncTimeout$source$1.read(AsyncTimeout.kt:129) at okio.RealBufferedSource.request(RealBufferedSource.kt:206) at okio.RealBufferedSource.require(RealBufferedSource.kt:199) at okio.RealBufferedSource.readByte(RealBufferedSource.kt:209) at okhttp3.internal.ws.WebSocketReader.readHeader(WebSocketReader.kt:119) at okhttp3.internal.ws.WebSocketReader.processNextFrame(WebSocketReader.kt:102) at okhttp3.internal.ws.RealWebSocket.loopReader(RealWebSocket.kt:293) at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:195) at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829)
The reason for the connection issue can be variable, please try to debug with different network.
I am using 2 streams. 1 for streaming market prices and 1 for listenUserStream(events from my wallet,like when a trade is set or fulfilled…). The error I get is for the listenUserStream and that stream is using TESTNET_WSS_URL = “wss://testnet.binance.vision”
but when I stream market prices I use wss://stream.binance.com:9443 . I have not got error on this stream, seems to work fine. I only get error for the listenUserStream so it might have to do with the testnet url.
Are you still seeing this error? can you share a gist for debug?
thanks
@2pd
try {
onOpenCallbackDataUser = (message) -> {
isWsUserDataStreamActive = true;
};
onMessageCallbackDataUser = (message) -> {
try{
Runnable task = () -> {
checkUserData(message);
};
if (isUserDataThreadActive) {
executorUserData.execute(task);
}
}catch(Exception e){
logger.error("Inside UserStream onMessage():" + e.getMessage());
}
};
try {
onClosingCallbackDataUser = (message) -> {
closeUserDataStreamAndThread("onClosingCallback:" + message);
};
onFailureCallbackMarketDataUser = (message) -> {
logger.error("onFailureCallback() message:" + message);
closeUserDataStreamAndThread("onFailureCallback:" + message);
};
}catch(Exception e){
logger.error("onFailureCallback() or closeCallback failure : " +e.getMessage());
closeUserDataStreamAndThread("onFailureCallback() or closeCallback failure : " +e.getMessage());
}
wsUserData = wsClient2UserData.listenUserStream(listenKey, onOpenCallbackDataUser,
onMessageCallbackDataUser, onClosingCallbackDataUser, onFailureCallbackMarketDataUser);
} catch (Exception e) {
logger.error("Userdatastream() failed " + e.getMessage());
}
}
Hi, am I supposed to do keepAlive for keeping my streaming userData alive ? or it is automatically handled by this repo ?
https://binance-docs.github.io/apidocs/spot/en/#user-data-streams