Bonjour,
Je tente d'upgrade un socket en Websocket mais je n'arrive pas à comprendre ça marche.
Il y a des libs pour le faire mais j'aimerais comprendre comment ça se passe vraiment.
Je vous montre un code python mais une solution en C/C++ avec winsock me convient aussi.
L'adresse de connexion est wss://www.bitmex.com/realtime
import socket
import ssl
packet = "GET /realtime HTTP/1.1\r\nHost: bitmex.com\r\nUpgrade: websocket\r\nConnection: " \
"Upgrade\r\nSec-WebSocket-Key: " \
"XbaSVjzMpuugjiIaTS1SYK8XDEE=\r\nOrigin: https://www.bitmex.com\r\nSec-WebSocket-Version: 13\r\n "
HOST, PORT = 'www.bitmex.com', 443
socketHandler = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socketWraped = ssl.create_default_context().wrap_socket(socketHandler, server_hostname=HOST)
socketWraped.connect((HOST, PORT))
socketWraped.send(str.encode(packet))
print(socketWraped.recv(1280))
socketWraped.close()
Merci
TCP c'est le layer d'en dessous, j'ai juste des bases en réseau mais qu'est ce que tu entends par upgrade la connexion TCP ?
Le 20 septembre 2021 à 15:02:10 :
TCP c'est le layer d'en dessous, j'ai juste des bases en réseau mais qu'est ce que tu entends par upgrade la connexion TCP ?
Upgrade de HTTPS à wss
C'est quoi l'objectif ? Comprendre comment marche le protocole ou comprendre comment marche l'implémentation ?
Dans le premier cas, bah, lis la spec [1] ?
Dans le second, bah lis l'implémentation d'une des libs ?
[1] https://datatracker.ietf.org/doc/html/rfc6455
J'ai déjà lu ton lien mais merci.
Je cherche à l'implémenter, j'ai une erreur mais je n'arrive pas à trouver ou.
J'avais regarder il y a quelques annees comment faire ca. J'avais besoin d'interfacer des applications python, java, et C++ avec un autre ecrit en socket.io. Pour limiter les dependances et avoir une interface commune, j'avais regarde comment faire ca moi meme. Et c'est super galere en faire, j'ai fini par utiliser des bilbiotheques.
Au moins je ne suis pas débile, ça n'est pas si simple que ça ^^
De ce que je regarde j'ai juste besoin d'envoyer le handshake mais il doit y avoir autre chose.
Là je ne comprends pas, la connexion est bien effectuée mais le serveur n'envoi aucun message après l'envoi de l'handshake.
Je n'ai pas de message d'erreur ni rien, ça bloque juste en attendant la réponse du serveur qui ne vient jamais.
Avec une librairie websocket ça fonctionne bien, le problème ne vient pas du serveur websocket que j'ai pris en test mais de mon implémentation.
Résolu, il me manquait \r\n à la fin du string ^^