2016-05-19 4 views
2

Ich versuche, eine einfache websocket Client in Perl zu schreiben:Einfache Perl websocket Client

use Protocol::WebSocket::Client; 

my $client = Protocol::WebSocket->new(url => 'ws://myserver:port'); 

# Sends a correct handshake header 
$client->connect; 

# Register on connect handler 
$client->on(
    connect => sub { 
     $client->write('hi there'); 
    } 
); 

# Parses incoming data and on every frame calls on_read 
$client->read($reply); 
print "$reply\n"; 

# Sends correct close header 
$client->disconnect; 

wie in the documentation for Protocol::WebSocket::Client gezeigt, aber ich erhalte die Meldung:

Can't locate object method "new" via package "Protocol::WebSocket" at ./webSocketClient.pl. 

Was mache ich falsch ?

+0

Da Sie eine Menge versuchen werden, um dies zum Laufen zu bringen, sollten Sie vielleicht in Alternativen suchen. https://metacpan.org/pod/AnyEvent::WebSocket::Client scheint vielversprechend. – simbabque

+0

Der Autor des Moduls hat mir das per E-Mail geschickt: * "Ich wollte etwas kommentieren, aber ich habe nicht genug Reputation oder wie es auch genannt wird. [Ein gutes Kundenbeispiel ist hier] (https://github.com/vti /protocol-websocket/blob/master/util/wsconsole)."* – Borodin

Antwort

2

Im Beispielcode ist ein Fehler aufgetreten. Protocol::WebSocket->new sollte Protocol::WebSocket::Client->new sein

+0

Gut gefunden. Wirst du es reparieren und einen PR machen? – simbabque

+2

@simbabque: Ich habe dem Autor eine E-Mail geschickt. Aber ich werde keine Korrektur einreichen, da das Sample immer noch mit dieser Korrektur gebrochen ist und ich nicht weiß, wie ich es beheben kann. – Borodin

+0

Ich sehe. Die Dokumentation ist bestenfalls spärlich. – simbabque

3

Protocol::WebSocket ist eine Low-Level-Implementierung von WebSocket Protokoll. Es enthält nicht den Code, der Daten sendet/empfängt; Es analysiert nur die Protokollnachrichten.

Sie könnten Beispiele für die Verwendung von Protocol::WebSocket mit verschiedenen Modulen suchen, siehe examples. Ein gutes Client-Beispiel ist in dem wsconsole-Dienstprogramm implementiert, das mit diesem Modul geliefert wird.

Es gibt mehrere High-Level-Module auf CPAN, die WebSockets implementieren, die alle Low-Level-Zeug verstecken, und die meisten von ihnen verwenden Protocol::WebSocket. Werfen Sie einen Blick auf AnyEvent::WebSocket::Client oder Net::Async::WebSocket::Client.

+1

Willkommen. Es ist immer schön, die Stimme des Autors zu lesen – Borodin