You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jul 16, 2026. It is now read-only.
Description:
I'm experiencing an issue with the Gate.io WebSocket API where the server disconnects me after I start sending ping messages to keep the connection alive.
What I'm doing:
Connecting to wss://api.gateio.ws/ws/v4/
Subscribing to spot.obu channel for ob.BTC_USDT.50
Sending ping messages every 20 seconds in the following format:
{
"time": {time},
"channel": "spot.ping"
}
Expected behavior:
The server should respond with a pong message and keep the connection alive.
Actual behavior:
Initially, the server responds with pong messages
After some time (varies, but eventually), the server disconnects the WebSocket connection
The disconnection happens without any error message or warning...after 270 seconds
Code:
import json
import time
import threading
from datetime import datetime
from websocket import create_connection
class WebSocketLogger:
def __init__(self):
self.start_time = datetime.now()
self.ws = None
self.running = False
def send_ping(self):
while self.running:
time.sleep(20)
if self.running and self.ws:
try:
self.ws.send(json.dumps({
"time": int(time.time()),
"channel": "spot.ping"
}))
print(f"Sent ping")
except Exception as e:
print(f"Error sending ping: {e}")
break
def run(self):
self.ws = create_connection("wss://api.gateio.ws/ws/v4/")
print("Connected to WebSocket")
self.ws.send(json.dumps({
"time": int(time.time()),
"channel": "spot.obu",
"event": "subscribe",
"payload": ["ob.BTC_USDT.50"]
}))
print("Sent subscription")
self.running = True
threading.Thread(target=self.send_ping, daemon=True).start()
try:
while True:
message = self.ws.recv()
if "pong" in message:
print(message)
except KeyboardInterrupt:
elapsed = datetime.now() - self.start_time
print(f"worked: {elapsed.seconds}.{elapsed.microseconds//1000:03d} sec")
finally:
self.running = False
self.ws.close()
if __name__ == "__main__":
WebSocketLogger().run()
Description:
I'm experiencing an issue with the Gate.io WebSocket API where the server disconnects me after I start sending ping messages to keep the connection alive.
What I'm doing:
{
"time": {time},
"channel": "spot.ping"
}
Expected behavior:
The server should respond with a pong message and keep the connection alive.
Actual behavior:
Initially, the server responds with pong messages
After some time (varies, but eventually), the server disconnects the WebSocket connection
The disconnection happens without any error message or warning...after 270 seconds
Code: