Ik heb dit project gevonden: http://code.google.com/p/standalonewebsocketserver/voor een WebSocket-server, maar ik moet een WebSocket-client in python implementeren, meer precies moet ik enkele opdrachten van XMPP in mijn WebSocket-server ontvangen.
Antwoord 1, autoriteit 100%
http://pypi.python.org/pypi/websocket-client/
Belachelijk eenvoudig te gebruiken.
sudo pip install websocket-client
Voorbeeld klantcode:
#!/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 "Receiving..."
result = ws.recv()
print "Received '%s'" % result
ws.close()
Voorbeeld servercode:
#!/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 __name__ == "__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()
Antwoord 2, autoriteit 12%
Autobahn heeft een goede websocket-clientimplementatie voor Python, evenals enkele goede voorbeelden. Ik heb het volgende getest met een Tornado WebSocket-server en het werkte.
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 __name__ == '__main__':
factory = WebSocketClientFactory("ws://localhost:9000")
factory.protocol = EchoClientProtocol
connectWS(factory)
reactor.run()
Antwoord 3, autoriteit 5%
Sinds ik de laatste tijd wat onderzoek op dat gebied heb gedaan (januari ’12), is de meest veelbelovende klant eigenlijk: WebSocket voor Python. Het ondersteunt een normale socket die je als volgt kunt aanroepen:
ws = EchoClient('http://localhost:9000/ws')
De client
kan Threaded
zijn of gebaseerd zijn op IOLoop
van Tornado-project. Hiermee kunt u een client voor meerdere gelijktijdige verbindingen maken. Handig als je stresstests wilt uitvoeren.
De client stelt ook de methoden onmessage
, opened
en closed
beschikbaar. (WebSocket-stijl).
Antwoord 4
- Bekijk de echo-client onder http://code.google.com/p/pywebsocket /Het is een Google-project.
- Een goede zoekopdracht in github is: https://github.com/search?type=Everything&language=python&q=websocket&repo=&langOverride=&x=14&y=29& ;start_value=1het geeft clients en servers terug.
- Bret Taylor implementeerde ook web-sockets boven Tornado (Python). Zijn blogpost op: Web Sockets in Tornadoen een client-implementatie-API is weergegeven op tornado.websocketin het gedeelte voor ondersteuning aan de clientzijde.
Antwoord 5
web2py heeft comet_messaging.py, dat Tornado gebruikt voor websockets. Bekijk hier een voorbeeld: http://vimeo.com/18399381 en hier vimeo . com / 18232653