Я нашел этот проект: http://code.google.com/p/standalonewebsocketserver/ для сервера websocket, но мне нужно реализовать клиент websocket в python, точнее мне нужно получить некоторые команды из xmpp на моем сервере websocket.Есть ли клиент WebSocket для python?
ответ
- Взгляните на эхо-клиент под 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). Его сообщение в блоге: Web Sockets in Tornado и API реализации клиента показано в tornado.websocket в разделе поддержки на стороне клиента.
, но мне нужен веб-sobcket в python без торнадо. – diegueus9
Я только что отредактировал ответ. Посмотрите на результаты поиска на github, есть много реализаций. –
@sw. Пункт 3 недействителен, так как он не является клиентом WebSocket, а скорее сервером WebSocket. –
web2py имеет comet_messaging.py, который использует Tornado для websockets, вот пример: http://vimeo.com/18399381 и здесь vimeo. com/18232653
Поскольку в последнее время я занимаюсь небольшим исследованием в этом поле (январь, 12), самым перспективным клиентом является: WebSocket for Python. Он поддерживает нормальный разъем, который можно назвать так:
ws = EchoClient('http://localhost:9000/ws')
client
может быть Threaded
или основанный на IOLoop
из Tornado проекта. Это позволит вам создать клиент с несколькими одновременными подключениями. Полезно, если вы хотите провести стресс-тесты.
Клиент также предоставляет методы onmessage
, opened
и closed
. (Стиль WebSocket).
Что касается параллелизма: мы протестировали клиента Autobahn до 60k WS исходящих соединений и сервера Autobahn до входящих соединений 180k WS. В Windows это было протестировано с использованием реактора IOCP (IO Completion Ports) с витой работой, а на FreeBSD это было протестировано с использованием реактора kqueue. Отказ от ответственности: Я являюсь автором Autobahn. – oberstet
Говоря о цифрах, на моей стороне я провел несколько расширенных тестов с помощью Tornado Websocket (и WS-for-py), и я легко получаю 15k соединений. В любом случае, не так много, но хорошо для теста. – kiddouk
У 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()
hey chris, знаете ли вы, как можно отключить клиента с сервера с помощью этого сервера autobahn websocket? какую функцию мне нужно позвонить, чтобы сделать это? – Johnydep
эй, @Johnydep да, я считаю, что это часть спецификации, что оба участника в соединении с websocket могут инициировать «закрытие». Не цитируйте меня. В любом случае, я посмотрел исходный код, и есть: «dropConnection» и «sendClose», я просто подключил их и проверил их :) – chrisallick
'от autobahn.twisted.websocket import WebSocketClientFactory, WebSocketClientProtocol, connectWS' - правильный импорт для новых версий автобана. http://stackoverflow.com/questions/21381454/autobahn-cannot-import-name-error – evan54
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()
Darn Я хочу, чтобы 'pip install' был прост в использовании на windows :( –
@SSHThis' pip install' отлично работает на окнах! Я использую ActivePython 2.7 и запускаю 'pip install websocket-client', и он просто работал. проблема заключалась в том, что 'python' столкнулся с cygwin python, поэтому мне пришлось явно запускать'/cygdrive/C/Python27/python', чтобы получить ActivePython –
@bryan hunt, как обрабатывать случай, когда сервер отключается, так как у меня получается сломанная труба ошибки - запись в закрытый канал/сокет/fd (возможно, клиент отключен) !!! –
- 1. Есть ли серверный клиент Websocket для node.js?
- 2. Есть ли клиент Python ebXML?
- 3. Клиент Python Websocket - несколько подпроцессов (45+)
- 4. Нитевидный, неблокирующий клиент websocket
- 5. nodejs как клиент websocket
- 6. Передача файла cookie через клиент python websocket
- 7. Как остановить клиент Python Websocket «ws.run_forever»
- 8. Клиент Websocket в Haskell?
- 9. Есть ли клиент Kafka Connect Python?
- 10. Клиент WebSocket в Lua
- 11. Клиент Websocket в C++
- 12. клиент websocket от perl
- 13. Клиент Websocket в OSGI
- 14. Websocket - Должен ли клиент отправлять кадры ping?
- 15. Клиент Java Websocket с сервером PHP WebSocket?
- 16. HTTP Kit Клиент WebSocket
- 17. Клиент Clojure WebSocket
- 18. Java WebSocket клиент Lib вопрос: пу-WebSocket-клиент sendBinary
- 19. Есть ли приличные реализации C# для Websocket?
- 20. Есть ли случай для клиентов Websocket для закрытия соединения?
- 21. Клиент python websocket - отправка сообщений с кода python на WebSocketServer
- 22. Простой WebSocket Perl клиент
- 23. WebSocket: Как клиент получает руководство?
- 24. Клиент Java Websocket без браузера
- 25. Spring websocket Клиент для связи с клиентом
- 26. Клиент Android для брокера сообщений WebSocket
- 27. Как повторно подключить клиент websocket для браузера?
- 28. Play Framework как клиент WebSocket
- 29. Клиент WebSocket с socketio/engineio
- 30. Есть ли простой клиент OAuth2 для php?
Попробуйте автобана? http://www.tavendo.de/autobahn/ –
Поскольку Autobahn основан на Twisted, также стоит отметить, что Twisted имеет очень хорошую поддержку для XMPP, то есть http://metajack.im/2008/09/ 04/get-twisted-on-xmpp --- the-future-of-twisted-words/ Таким образом, вы можете использовать Autobahn для WebSockets + XMPP на одном экземпляре Twisted. Отказ от ответственности: Я являюсь автором Autobahn. – oberstet