IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

Delphi WebSocket WSS Client API Binance


Sujet :

Web & réseau Delphi

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juillet 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2011
    Messages : 2
    Points : 0
    Points
    0
    Par défaut Delphi WebSocket WSS Client API Binance
    Je suis en delphi berlin 10.1...

    voila, j'essaye de devlopper une application pour me connecter a mon compte binance crypto en delphi ... je reussi a le faire avec sgcWebSockets mais c'est une solution payante...
    j'ai essayer de comprendre d'autre solution gratuite mais on dirrait que tout le monde fait seullement la version serveur du websocket...


    en javascript je n'est qu'a faire ceci et j'ai automatiquement le prix du BTC/BUSD qui rentre en temp reel via le event onReceive :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        conn = new TWebSocket("wss://stream.binance.com:9443/ws/btcbusd@trade");
        conn.onOpen = opentest;
        conn.onReceive = receivedata;
        conn.onError = errortest;
        conn.onClose = closetest;
        conn.connect();

    je veux pas faire un server, tout ce que je veux c'est me faire un objet delphi qu'on entre l'adresse wss, quil se connect et reste connecter websocket pour recevoir les data du server en temp reel...

    please !!! quelqu'un peux m'aider ?


  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    12 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 12 219
    Points : 21 554
    Points
    21 554
    Par défaut
    le composant de Paul Toth dommage, on dirait un Server et non le client ... en même temps, ça semble juste être des requêtes HTTPS (le serveur pouvant émettre de façon asynchrone), le plus difficile étant si je me souviens bien le chiffrement et signature que l'on devait un peu tout faire à la main en Delphi XE, désolé, je n'ai aussi regarder que la partie Server pour justement recevoir des données depuis un appel type JQuery

    Idem, gain de temps, d'argent Devart TScWebSocketClient, acheter un composant payant fait gagné du temps et plus fiable, surtout si la source est réputé comme Devart (Core Lab) qui fait aussi une couche provider DB des plus performantes.

    Si il n'y a pas de client Indy pour les WebSocket, il y en a dans un ICS : https://getitnow.embarcadero.com/ICS_FMX-8.67-11/
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    8 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 224
    Points : 26 635
    Points
    26 635
    Par défaut
    oui je n'ai publié que la partie serveur, mais j'ai développé la partie cliente que j'ai surtout testé sur mon implémentation serveur.

    par contre je n'utilise pas Indy mais mon propre composant HTTP pour ça...Indy c'est bien, mais comme le support SSL est devenu insuffisant, j'ai d'abord créé Socket Handler Indy pour SChannel, et petit à petit j'ai repris une portion de HTTP (qui fini par être complexe) dans un composant qui a la même tronche que Indy mais qui est de mon cru.

    alors pour en revenir au client WebSocket, c'est pas très compliqué à faire, mais comme c'est une connexion persistante, les composants HTTP de Indy sont pas prévu pour au départ.

    sinon c'est pas super compliqué, on commence par un GET HTTP avec les entêtes "Connection: Upgrade" et "Upgrade: websocket" pour indiquer au serveur qu'on veux faire du WS...il faut aussi préciser "Sec-WebSocket-Version: 13" et un clé de connexion "Sec-WebSocket-Key: xxx" qui est une clé de 16 octets random encodée en Base64

    le serveur doit répondre avec en gros les mêmes entêtes plus un "Sec-Websocket-Accept: yyy" qui est un SHA1 de la clé + '258EAFA5-E914-47DA-95CA-C5AB0DC85B11' cf ma partie serveur

    ensuite c'est un échange de messages avec la particularité que le client encode ses messages en XOR avec une clé aléatoire...le décodage est visible ici

    côté client ça donne un truc comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // x pointe ici après la taille du message qui est sur un nombre variable d'octets 
      for i := 0 to 3 do
      begin
        Inc(Msg[x], Random(255));
        Inc(x);
      end;
    // après les 4 random on a le message lui-même
      for i := 0 to Count - 1 do
      begin
        Msg[x + i] := Data[Start + i] xor Msg[x - 4 + i mod 4];
      end;
    ok c'est pas une solution clé en main, mais c'est gratos et si c'était clé en main ça serait sous GPL :p
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juillet 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2011
    Messages : 2
    Points : 0
    Points
    0
    Par défaut
    ? tu utilise les winsock directement comme cette exemple : http://www.felix-colibri.com/papers/...ogramming.html
    ou tu utilise le composant TTcpClient ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/03/2014, 10h17
  2. delphi serveur / java client
    Par djalilosse dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/12/2012, 08h05
  3. [Continuum] Ajout de BuildDefinition- Continuum XmlRpc Client API
    Par dev09 dans le forum Intégration Continue
    Réponses: 41
    Dernier message: 02/10/2007, 16h35
  4. [Delphi 2006 .NET] Client TCP
    Par Griswold dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 06/06/2006, 23h32
  5. Delphi 7 - Install client d'une appli utilisant DBExpress
    Par rouxy dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/08/2005, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo