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.
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()
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()
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).
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