Se connecter

Informatique

Programmation

Sujet : updage une connexion TCP en Websocket
1
outiat
Niveau 6
20 septembre 2021 à 13:40:54

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

Oshlatant
Niveau 10
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 ?

outiat
Niveau 6
20 septembre 2021 à 15:07:06

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

Pseudo supprimé
Niveau 8
20 septembre 2021 à 15:19:04

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

outiat
Niveau 6
20 septembre 2021 à 15:29:13

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.

godrik
Niveau 22
20 septembre 2021 à 16:26:29

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.

outiat
Niveau 6
20 septembre 2021 à 16:34:43

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.

outiat
Niveau 6
20 septembre 2021 à 16:44:57

Résolu, il me manquait \r\n à la fin du string ^^

1
Sujet : updage une connexion TCP en Websocket
   Retour haut de page
Consulter la version web de cette page