有没有为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很有用。

客户端还公开了onmessageopenedclosed方法。 (WebSocket风格)。

web2py有comet_messaging.py,它使用Tornado for websockets查看这里的一个例子: http ://vimeo.com/18399381,这里是vimeo。 com / 18232653

  1. 看一下http://code.google.com/p/pywebsocket/下的echo客户端这是一个Google项目。;
  2. github中的一个很好的search是: https : //github.com/search? type = Everything & language = python & q = websocket & repo =& langOverride =& x =14& y = 29 & start_value =1它返回客户端和服务器。
  3. Bret Taylor还通过Tornado(Python)实现了web套接字。 他的博客文章位于: Tornado的Web Sockets和客户端实现API在客户端支持部分的tornado.websocket中显示。