有没有为python实现的WebSocket客户端?
我发现这个项目: http : //code.google.com/p/standalonewebsocketserver/为一个websocket服务器,但我需要在Python中实现一个websocket客户端,更确切地说,我需要从我的websocket服务器从xmpp接收一些命令。
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()
Autobahn为Python提供了一个很好的websocket客户端实现以及一些很好的例子。 我用Tornado WebSocket服务器testing了以下内容,并且工作正常。
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()
由于我最近在这方面做了一些研究(12年1月),最有前途的客户实际上是: Python的WebSocket 。 它支持一个正常的套接字,你可以这样调用:
ws = EchoClient('http://localhost:9000/ws')
client
可以是Threaded
或基于Tornado项目的IOLoop
。 这将允许您创build一个多并发连接客户端。 如果你想运行压力testing很有用。
客户端还公开了onmessage
, opened
和closed
方法。 (WebSocket风格)。
web2py有comet_messaging.py,它使用Tornado for websockets查看这里的一个例子: http ://vimeo.com/18399381,这里是vimeo。 com / 18232653
- 看一下http://code.google.com/p/pywebsocket/下的echo客户端这是一个Google项目。;
- github中的一个很好的search是: https : //github.com/search? type = Everything & language = python & q = websocket & repo =& langOverride =& x =14& y = 29 & start_value =1它返回客户端和服务器。
- Bret Taylor还通过Tornado(Python)实现了web套接字。 他的博客文章位于: Tornado的Web Sockets和客户端实现API在客户端支持部分的tornado.websocket中显示。