Examples on TLS connections (disable cert/hostname checks) had the "https" schema instead of "wss".
		
			
				
	
	
		
			209 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			209 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
=================
 | 
						|
websocket-client
 | 
						|
=================
 | 
						|
 | 
						|
websocket-client module  is WebSocket client for python. This provide the low level APIs for WebSocket. All APIs are the synchronous functions.
 | 
						|
 | 
						|
websocket-client supports only hybi-13.
 | 
						|
 | 
						|
 | 
						|
License
 | 
						|
============
 | 
						|
 | 
						|
 - LGPL
 | 
						|
 | 
						|
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()
 | 
						|
 | 
						|
 | 
						|
FAQ
 | 
						|
============
 | 
						|
 | 
						|
How to disable ssl cert verification?
 | 
						|
----------------------------------------
 | 
						|
 | 
						|
Please set sslopt to {"cert_reqs": ssl.CERT_NONE}.
 | 
						|
 | 
						|
WebSocketApp sample::
 | 
						|
 | 
						|
    ws = websocket.WebSocketApp("wss://echo.websocket.org")
 | 
						|
    ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})
 | 
						|
 | 
						|
create_connection sample::
 | 
						|
 | 
						|
    ws = websocket.create_connection("wss://echo.websocket.org",
 | 
						|
      sslopt={"cert_reqs": ssl.CERT_NONE})
 | 
						|
 | 
						|
WebSocket sample::
 | 
						|
 | 
						|
    ws = websocket.WebSocket(sslopt={"cert_reqs": ssl.CERT_NONE})
 | 
						|
    ws.connect("wss://echo.websocket.org")
 | 
						|
 | 
						|
 | 
						|
How to disable hostname verification.
 | 
						|
----------------------------------------
 | 
						|
 | 
						|
Please set sslopt to {"check_hostname": False}.
 | 
						|
(since v0.18.0)
 | 
						|
 | 
						|
WebSocketApp sample::
 | 
						|
 | 
						|
    ws = websocket.WebSocketApp("wss://echo.websocket.org")
 | 
						|
    ws.run_forever(sslopt={"check_hostname": False})
 | 
						|
 | 
						|
create_connection sample::
 | 
						|
 | 
						|
    ws = websocket.create_connection("wss://echo.websocket.org",
 | 
						|
      sslopt={"check_hostname": False})
 | 
						|
 | 
						|
WebSocket sample::
 | 
						|
 | 
						|
    ws = websocket.WebSocket(sslopt={"check_hostname": False})
 | 
						|
    ws.connect("wss://echo.websocket.org")
 | 
						|
 | 
						|
 | 
						|
Sub Protocols.
 | 
						|
----------------------------------------
 | 
						|
 | 
						|
The server needs to support sub protocols, please set the subprotcol like this.
 | 
						|
 | 
						|
 | 
						|
Subprotocol sample::
 | 
						|
 | 
						|
    ws = websocket.create_connection("ws://exapmle.com/websocket", subprotocols=["binary", "base64"])
 | 
						|
 | 
						|
 | 
						|
 | 
						|
wsdump.py
 | 
						|
============
 | 
						|
 | 
						|
wsdump.py is simple WebSocket test(debug) tool.
 | 
						|
 | 
						|
sample for echo.websocket.org::
 | 
						|
 | 
						|
  $ wsdump.py ws://echo.websocket.org/
 | 
						|
  Press Ctrl+C to quit
 | 
						|
  > Hello, WebSocket
 | 
						|
  < Hello, WebSocket
 | 
						|
  > How are you?
 | 
						|
  < How are you?
 | 
						|
 | 
						|
Usage
 | 
						|
---------
 | 
						|
 | 
						|
usage::
 | 
						|
  wsdump.py [-h] [-v [VERBOSE]] ws_url
 | 
						|
 | 
						|
WebSocket Simple Dump Tool
 | 
						|
 | 
						|
positional arguments:
 | 
						|
  ws_url                websocket url. ex. ws://echo.websocket.org/
 | 
						|
 | 
						|
optional arguments:
 | 
						|
  -h, --help                           show this help message and exit
 | 
						|
WebSocketApp
 | 
						|
  -v VERBOSE, --verbose VERBOSE    set verbose mode. If set to 1, show opcode. If set to 2, enable to trace websocket module
 | 
						|
 | 
						|
example::
 | 
						|
 | 
						|
  $ wsdump.py ws://echo.websocket.org/
 | 
						|
  $ wsdump.py ws://echo.websocket.org/ -v
 | 
						|
  $ wsdump.py ws://echo.websocket.org/ -vv
 | 
						|
 |