J'ai trouvé ce projet: http://code.google.com/p/standalonewebsocketserver/ pour un serveur WebSocket, mais je dois implémenter un client WebSocket en python, plus précisément, j'ai besoin de recevoir des commandes. depuis XMPP sur mon serveur WebSocket.
http://pypi.python.org/pypi/websocket-client/
Ridiculement facile à utiliser.
Sudo pip install websocket-client
Exemple de code client:
#!/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()
Exemple de code serveur:
#!/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 a une bonne implémentation de client Websocket pour Python ainsi que de bons exemples. J'ai testé les éléments suivants avec un serveur Tornado WebSocket et tout a fonctionné.
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()
Depuis que je fais un peu de recherche dans ce domaine récemment (janvier 2012), le client le plus prometteur est en réalité: WebSocket pour Python . Il supporte un socket normal que vous pouvez appeler comme ceci:
ws = EchoClient('http://localhost:9000/ws')
Le client
peut être Threaded
ou basé sur le projet IOLoop
de Tornado . Cela vous permettra de créer un client avec plusieurs connexions simultanées. Utile si vous voulez exécuter des tests de stress.
Le client expose également les méthodes onmessage
, opened
et closed
. (Style WebSocket).
web2py a comet_messaging.py, qui utilise Tornado pour les websockets. Regardez un exemple ici: http://vimeo.com/18399381 et ici vimeo. com/18232653