wake-up-neo.com

Ist ein WebSocket-Client für Python implementiert?

Ich habe folgendes Projekt gefunden: http://code.google.com/p/standalonewebsocketserver/ für einen WebSocket-Server, aber ich muss einen WebSocket-Client in Python implementieren, genauer gesagt, ich muss einige Befehle empfangen von XMPP in meinem WebSocket-Server.

90
diegueus9

http://pypi.python.org/pypi/websocket-client/

Lächerlich einfach zu bedienen.

 Sudo pip install websocket-client

Beispiel-Clientcode:

#!/usr/bin/python

from websocket import create_connection
ws = create_connection("ws://localhost:8080/websocket")
print "Sending 'Hello, World'..."
ws.send("Hello, World")
print "Sent"
print "Reeiving..."
result =  ws.recv()
print "Received '%s'" % result
ws.close()

Beispielservercode:

#!/usr/bin/python
import websocket
import thread
import time

def on_message(ws, message):
    print message

def on_error(ws, error):
    print error

def on_close(ws):
    print "### closed ###"

def on_open(ws):
    def run(*args):
        for i in range(30000):
            time.sleep(1)
            ws.send("Hello %d" % i)
        time.sleep(1)
        ws.close()
        print "thread terminating..."
    thread.start_new_thread(run, ())


if __== "__main__":
    websocket.enableTrace(True)
    ws = websocket.WebSocketApp("ws://echo.websocket.org/",
                                on_message = on_message,
                                on_error = on_error,
                                on_close = on_close)
    ws.on_open = on_open

    ws.run_forever()
149
Bryan Hunt

Autobahn hat eine gute Websocket-Client-Implementierung für Python sowie einige gute Beispiele. Ich habe Folgendes mit einem Tornado WebSocket-Server getestet und es hat funktioniert.

from twisted.internet import reactor
from autobahn.websocket import WebSocketClientFactory, WebSocketClientProtocol, connectWS


class EchoClientProtocol(WebSocketClientProtocol):

   def sendHello(self):
      self.sendMessage("Hello, world!")

   def onOpen(self):
      self.sendHello()

   def onMessage(self, msg, binary):
      print "Got echo: " + msg
      reactor.callLater(1, self.sendHello)


if __== '__main__':

   factory = WebSocketClientFactory("ws://localhost:9000")
   factory.protocol = EchoClientProtocol
   connectWS(factory)
   reactor.run()
19
chrisallick

Da ich in letzter Zeit ein bisschen auf diesem Gebiet recherchiert habe (Jan, '12), ist der vielversprechendste Client tatsächlich: WebSocket for Python . Es unterstützt einen normalen Socket, den Sie folgendermaßen aufrufen können:

ws = EchoClient('http://localhost:9000/ws')

Das client kann Threaded sein oder auf IOLoop aus Tornado Projekt basieren. Auf diese Weise können Sie einen Client für mehrere gleichzeitige Verbindungen erstellen. Nützlich, wenn Sie Stresstests durchführen möchten.

Der Client macht auch die Methoden onmessage, opened und closed verfügbar. (WebSocket-Stil).

10
kiddouk
  1. Schauen Sie sich den Echo-Client unter http://code.google.com/p/pywebsocket/ an. Es ist ein Google-Projekt.
  2. Eine gute Suche in Github ist: https://github.com/search?type=Everything&language=python&q=websocket&repo=&langOverride=&x=14&y=29&start_value=1 Gibt Clients und Server zurück.
  3. Bret Taylor implementierte auch Web-Sockets über Tornado (Python). Sein Blog-Beitrag unter: Web Sockets in Tornado und eine Client-Implementierungs-API unter tornado.websocket im clientseitigen Support-Bereich.
0
sw.

web2py hat comet_messaging.py, das Tornado für Websockets verwendet. Schauen Sie sich hier ein Beispiel an: http://vimeo.com/18399381 und hier vimeo. com/18232653