I'm trying to connect to bybit wss but it's impossible and I don't know what could be going wrong.
It seems that I get the same error with coinbase, both have TLSv1.3, the code works because I have tried it with other exchanges, in this case okx and binance, the funny thing is that both use TLSv1.2
from autobahn.websocket.types import ConnectionDeny
from autobahn.twisted.websocket import WebSocketClientFactory, WebSocketClientProtocol, connectWS
from twisted.internet import reactor, task ,ssl
import json
from pymongo import MongoClient
# Configurar la conexión a la base de datos MongoDB
client = MongoClient("localhost", 27017)
db = client["Bybit_ord"]
posts = db.btc_usdc
class MyWebSocketClientProtocol(WebSocketClientProtocol):
def onConnect(self, response):
print("Conexión iniciada: {}".format(response.peer))
def onOpen(self):
print("Conexión abierta")
# Enviar un mensaje cuando se establezca la conexión
self.sendMessage(json.dumps({
"op": "subscribe",
"args": ["orderbook.50.BTCUSDC"]
}).encode('utf8'))
def onMessage(self, payload, isBinary):
if not isBinary:
# Imprimir el mensaje recibido
print("Mensaje recibido: {}".format(payload.decode('utf8')))
# Insertar el mensaje recibido en la base de datos MongoDB
message = json.loads(payload.decode('utf8'))
posts.insert_one(message)
def onClose(self, wasClean, code, reason):
print("Conexión cerrada")
print(code)
print(reason)
def onConnectionLost(self, reason):
print("Conexión perdida: {}".format(reason))
# Reconectar a la conexión WebSocket
self.factory.resetDelay()
WebSocketClientProtocol.onConnectionLost(self, reason)
class MyWebSocketClientFactory(WebSocketClientFactory):
protocol = MyWebSocketClientProtocol
def clientConnectionFailed(self, connector, reason):
print("La conexión falló: {}".format(reason))
WebSocketClientFactory.clientConnectionFailed(self, connector, reason)
connector.connect()
def clientConnectionLost(self, connector, reason):
print("La conexión se perdió: {}".format(reason))
WebSocketClientFactory.clientConnectionLost(self, connector, reason)
connector.connect()
def send_message():
for protocol in factory.protocols:
protocol.sendMessage(json.dumps({
"op": "subscribe",
"args": ["orderbook.50.BTCUSDC"]
}).encode('utf8'))
factory = MyWebSocketClientFactory("wss://stream.bybit.com/v5/public/spot")
factory.protocol = MyWebSocketClientProtocol
#rate_limit = 0.1 # 100 ms
# task.LoopingCall(send_message).start(rate_limit)
reactor.connectTCP("stream.bybit.com",443,factory)
reactor.run()
Conexión cerrada 1006 connection was closed uncleanly ("WebSocket connection upgrade failed [400]: Bad Request") La conexión se perdió: [Failure instance: Traceback (failure with no frames): <class 'twisted.internet.error.ConnectionAborted'>: Connection was aborted locally using ITCPTransport.abortConnection.
I have updated all the libraries, updated openSSL to a more recent version