Я нашел этот проект: http://code.google.com/p/standalonewebsocketserver/ для сервера websocket, но мне нужно реализовать клиент websocket в python, точнее мне нужно для получения некоторых команд из xmpp на моем сервере websocket.
Есть ли клиент WebSocket для python?
Ответ 1
http://pypi.python.org/pypi/websocket-client/
Смешно прост в использовании.
sudo pip install websocket-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()
Другой пример:
#!/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()
Ответ 2
Autobahn имеет хорошую реализацию клиента websocket для Python, а также некоторые хорошие примеры. Я тестировал следующее с сервером Tornado WebSocket, и он работал.
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()
Ответ 3
Поскольку в последнее время я занимаюсь небольшим исследованием в этой области (январь, 12), наиболее перспективным клиентом является: WebSocket для Python. Он поддерживает обычный сокет, который вы можете вызвать следующим образом:
ws = EchoClient('http://localhost:9000/ws')
client
может быть Threaded
или на основе IOLoop
из проекта Tornado. Это позволит вам создать клиент с несколькими одновременными подключениями. Полезно, если вы хотите провести стресс-тесты.
Клиент также предоставляет методы onmessage
, opened
и closed
. (Стиль WebSocket).
Ответ 4
У web2py есть comet_messaging.py, который использует Tornado для websockets, посмотрите здесь пример: http://vimeo.com/18399381 и здесь vimeo. com/18232653
Ответ 5
- Взгляните на эхо-клиент в http://code.google.com/p/pywebsocket/ Это проект Google.
- Хороший поиск в github: https://github.com/search?type=Everything&language=python&q=websocket&repo=&langOverride=&x=14&y=29&start_value=1 возвращает клиенты и серверы.
- Брет Тейлор также реализовал сетевые сокеты над Tornado (Python). Его сообщение в блоге: Веб-сокеты в Tornado и API-интерфейс реализации клиента показаны на tornado.websocket в разделе поддержки на стороне клиента.