Is er een WebSocket-client geïmplementeerd voor Python?

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 clientkan Threadedzijn of gebaseerd zijn op IOLoopvan 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, openeden closedbeschikbaar. (WebSocket-stijl).


Antwoord 4

  1. Bekijk de echo-client onder http://code.google.com/p/pywebsocket /Het is een Google-project.
  2. Een goede zoekopdracht in github is: https://github.com/search?type=Everything&language=python&q=websocket&repo=&langOverride=&x=14&y=29&amp ;start_value=1het geeft clients en servers terug.
  3. 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

Other episodes