Znalazłem ten projekt: http://code.google.com/p/standalonewebsocketserver/ dla serwera WebSocket, ale muszę zaimplementować klienta WebSocket w pythonie, a dokładniej muszę otrzymać kilka poleceń z XMPP na moim serwerze WebSocket.
Znalazłem ten projekt: http://code.google.com/p/standalonewebsocketserver/ dla serwera WebSocket, ale muszę zaimplementować klienta WebSocket w pythonie, a dokładniej muszę otrzymać kilka poleceń z XMPP na moim serwerze WebSocket.
Odpowiedzi:
http://pypi.python.org/pypi/websocket-client/
Absurdalnie łatwy w użyciu.
sudo pip install websocket-client
Przykładowy kod klienta:
#!/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()
Przykładowy kod serwera:
#!/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()
pip installdziała dobrze w systemie Windows! Używam ActivePython 2.7 i uruchomiłem pip install websocket-clienti po prostu zadziałało. Jedynym problemem było to, że pythonzderzyło się z Cygwin Python, więc musiałem jawnie uruchomić, /cygdrive/C/Python27/pythonaby uzyskać ActivePython
sudo. Użyj --user.
Autobahn ma dobrą implementację klienta Websocket dla Pythona, a także kilka dobrych przykładów. Przetestowałem poniższe z serwerem Tornado WebSocket i zadziałało.
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()
from autobahn.twisted.websocket import WebSocketClientFactory, WebSocketClientProtocol, connectWSjest prawidłowym importem dla nowszych wersji autobahn. stackoverflow.com/questions/21381454/…
Ponieważ ostatnio przeprowadziłem trochę badań w tej dziedzinie (styczeń '12), najbardziej obiecującym klientem jest właściwie: WebSocket for Python . Obsługuje normalne gniazdo, które możesz nazwać w ten sposób:
ws = EchoClient('http://localhost:9000/ws')
clientMoże być Threadedalbo na podstawie IOLoopz Tornado projektu. Umożliwi to utworzenie klienta wielu jednoczesnych połączeń. Przydatne, jeśli chcesz przeprowadzić testy warunków skrajnych.
Klient naraża również onmessage, openedi closedmetod. (Styl WebSocket).
web2py ma comet_messaging.py, który używa Tornado do websockets. Przykład tutaj: http://vimeo.com/18399381 i tutaj vimeo. com / 18232653