Python的Websocket客户端:Websocket-Client

dwd4 10年前

Websocket-Client 是 Python 上的 Websocket 客户端。它只支持 hybi-13,且所有的 Websocket API 都支持同步。

Installation

This module is tested on Python 2.7 and Python 3.x.

Type "python setup.py install" or "pip install websocket-client" to install.

Caution!

from v0.16.0, we can install by "pip install websocket-client" for python 3.

This module depend on

  • six
  • backports.ssl_match_hostname for Python 2.x

How about Python 3

Now, we support python 3 on single source code from version 0.14.0. Thanks, @battlemidget and @ralphbean.

HTTP Proxy

Support websocket access via http proxy. The proxy server must allow "CONNECT" method to websocket port. Default squid setting is "ALLOWED TO CONNECT ONLY HTTPS PORT".

Current implementation of websocket-client is using "CONNECT" method via proxy.

example:

import websocket  ws = websocket.WebSocket()  ws.connect("ws://example.com/websocket", http_proxy_host="proxy_host_name", http_proxy_port=3128)  :

Example

Low Level API example:

from websocket import create_connection  ws = create_connection("ws://echo.websocket.org/")  print "Sending 'Hello, World'..."  ws.send("Hello, World")  print "Sent"  print "Reeiving..."  result =  ws.recv()  print "Received '%s'" % result  ws.close()

If you want to customize socket options, set sockopt.

sockopt example:

from websocket import create_connection  ws = create_connection("ws://echo.websocket.org/",                          sockopt=((socket.IPPROTO_TCP, socket.TCP_NODELAY),))

JavaScript websocket-like API example:

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(3):              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()

项目主页:http://www.open-open.com/lib/view/home/1427876600225