Websocket client

Alle Fragen zur Netzwerkkommunikation
Antworten
xedp3x
Beiträge: 15
Registriert: Mi 8. Jun 2011, 17:46

Websocket client

Beitrag von xedp3x »

Ich möchte mich mit einem Websocket verbinden und dann die Daten auswerten.

Code: Alles auswählen

unit Unit1; 
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  lNetComponents, lNet;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Ticker: TLTCPComponent;
    log: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure TickerConnect(aSocket: TLSocket);
    procedure TickerReceive(aSocket: TLSocket);
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  Form1: TForm1; 
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Ticker.Connect('websocket.mtgox.com',80);
  log.Lines.Add('Ticker is connecting');
end;
 
 
procedure TForm1.TickerConnect(aSocket: TLSocket);
var
   send : TStringList;
begin
    log.Lines.Add('Ticker connected');
    send := TStringList.Create;
 
    send.Add('GET /mtgox HTTP/1.1');
    send.Add('Upgrade: websocket');
    send.Add('Connection: Upgrade');
    send.Add('Host: websocket.mtgox.com');
    send.Add('Origin: null');
    send.Add('');
    Ticker.SendMessage(send.Text);
end;
 
procedure TForm1.TickerReceive(aSocket: TLSocket);
var
   msg : String;
begin
  aSocket.GetMessage(msg);
  memo1.Lines.Add('-'+msg);
end;
 
end.
TickerReceive springt auch bei jedem update an, nur ist GetMessage immer leer.

Weiß jamand wie ich Daten auslesen kann?

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Websocket client

Beitrag von Bauer321 »

habe keine erfahrung damit aber wenn ich mir das so angucke frage ich mich wieso diese Zeile so ist: Ticker.SendMessage(send.Text); müsste es nicht eigentlich aSocket.SendMessage(send.Text); sein?
www.mcpatcher.net | www.hoeper.me

xedp3x
Beiträge: 15
Registriert: Mi 8. Jun 2011, 17:46

Re: Websocket client

Beitrag von xedp3x »

Genaugenommen ja. Aber beim Client ist es egal da eh nur eine Verbindung besteht.

Das senden ist nicht das Problem da ich bei
aSocket.GetMessage(msg);
auch den Header vom Server bekomme.
Nur wenn Updates kommen wird nichts angezeigt.

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Websocket client

Beitrag von Bauer321 »

was haste denn damit vor?
www.mcpatcher.net | www.hoeper.me

xedp3x
Beiträge: 15
Registriert: Mi 8. Jun 2011, 17:46

Re: Websocket client

Beitrag von xedp3x »

Die Updates sind immer die Aktuellen Kurse.

Die möchte ich ordentlich darstellen und gleich mit Aktionen verknüpfen.

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Websocket client

Beitrag von Bauer321 »

aso alternativ könnte man das ja einfach in eine ini schreiben diese downloaden und dann auswerten weiß ja nicht wie oft du den updaten lassen willst und so...
www.mcpatcher.net | www.hoeper.me

xedp3x
Beiträge: 15
Registriert: Mi 8. Jun 2011, 17:46

Re: Websocket client

Beitrag von xedp3x »

Ein Websocket kann man nicht herunterladen. Es ist eine Bidirektionale Verbindung daher nicht mehr klastisches http.
Ich könnte zwar den Server anpollen aber die API ist auch so schon chronisch überlastet.

In Python klappt es. Daher werde ich einfach die Daten dort entgegen nehmen und über eine normale TCP Verbindung weiterleiten.

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Websocket client

Beitrag von Scotty »

Ich hab aber zwar keine Ahnung, wie LNet funktioniert, aber bei Synapse ist es ein beliebter Fehler, das CRLF am Ende zu vergessen.

xedp3x
Beiträge: 15
Registriert: Mi 8. Jun 2011, 17:46

Re: Websocket client

Beitrag von xedp3x »

Das Problem ist das ich Serverseitig nichts ändern kann.

Es wird außerdem jedes Update registriert. Den synchron zu Telnet bekomme ich eine Leere naricht.

Antworten