You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					306 lines
				
				9.5 KiB
			
		
		
			
		
	
	
					306 lines
				
				9.5 KiB
			| 
								 
											7 years ago
										 
									 | 
							
								Metadata-Version: 1.2
							 | 
						||
| 
								 | 
							
								Name: websocket-client
							 | 
						||
| 
								 | 
							
								Version: 0.55.0
							 | 
						||
| 
								 | 
							
								Summary: WebSocket client for Python. hybi13 is supported.
							 | 
						||
| 
								 | 
							
								Home-page: https://github.com/websocket-client/websocket-client.git
							 | 
						||
| 
								 | 
							
								Author: liris
							 | 
						||
| 
								 | 
							
								Author-email: liris.pp@gmail.com
							 | 
						||
| 
								 | 
							
								License: BSD
							 | 
						||
| 
								 | 
							
								Description: =================
							 | 
						||
| 
								 | 
							
								        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
							 | 
						||
| 
								 | 
							
								        =======
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								         - BSD
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        Installation
							 | 
						||
| 
								 | 
							
								        ============
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        This module is tested on Python 2.7 and Python 3.4+.
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        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 depends on
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								         - six
							 | 
						||
| 
								 | 
							
								         - backports.ssl_match_hostname for Python 2.x
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        Performance
							 | 
						||
| 
								 | 
							
								        -----------
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        The "send" and "validate_utf8" methods are too slow on pure python. If you want to get better performace, please install both numpy and wsaccel.
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        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
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        .. code:: python
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								            import websocket
							 | 
						||
| 
								 | 
							
								            ws = websocket.WebSocket()
							 | 
						||
| 
								 | 
							
								            ws.connect("ws://example.com/websocket", http_proxy_host="proxy_host_name", http_proxy_port=3128)
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        Examples
							 | 
						||
| 
								 | 
							
								        ========
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        Long-lived connection
							 | 
						||
| 
								 | 
							
								        ---------------------
							 | 
						||
| 
								 | 
							
								        This example is similar to how WebSocket code looks in browsers using JavaScript.
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        .. code:: python
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								            import websocket
							 | 
						||
| 
								 | 
							
								            try:
							 | 
						||
| 
								 | 
							
								                import thread
							 | 
						||
| 
								 | 
							
								            except ImportError:
							 | 
						||
| 
								 | 
							
								                import _thread as 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()
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        Short-lived one-off send-receive
							 | 
						||
| 
								 | 
							
								        --------------------------------
							 | 
						||
| 
								 | 
							
								        This is if you want to communicate a short message and disconnect immediately when done.
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        .. code:: python
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								            from websocket import create_connection
							 | 
						||
| 
								 | 
							
								            ws = create_connection("ws://echo.websocket.org/")
							 | 
						||
| 
								 | 
							
								            print("Sending 'Hello, World'...")
							 | 
						||
| 
								 | 
							
								            ws.send("Hello, World")
							 | 
						||
| 
								 | 
							
								            print("Sent")
							 | 
						||
| 
								 | 
							
								            print("Receiving...")
							 | 
						||
| 
								 | 
							
								            result =  ws.recv()
							 | 
						||
| 
								 | 
							
								            print("Received '%s'" % result)
							 | 
						||
| 
								 | 
							
								            ws.close()
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        If you want to customize socket options, set sockopt.
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        sockopt example
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        .. code:: python
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								            from websocket import create_connection
							 | 
						||
| 
								 | 
							
								            ws = create_connection("ws://echo.websocket.org/",
							 | 
						||
| 
								 | 
							
								                                    sockopt=((socket.IPPROTO_TCP, socket.TCP_NODELAY),))
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        More advanced: Custom class
							 | 
						||
| 
								 | 
							
								        ---------------------------
							 | 
						||
| 
								 | 
							
								        You can also write your own class for the connection, if you want to handle the nitty-gritty details yourself.
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        .. code:: python
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								            import socket
							 | 
						||
| 
								 | 
							
								            from websocket import create_connection, WebSocket
							 | 
						||
| 
								 | 
							
								            class MyWebSocket(WebSocket):
							 | 
						||
| 
								 | 
							
								                def recv_frame(self):
							 | 
						||
| 
								 | 
							
								                    frame = super().recv_frame()
							 | 
						||
| 
								 | 
							
								                    print('yay! I got this frame: ', frame)
							 | 
						||
| 
								 | 
							
								                    return frame
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								            ws = create_connection("ws://echo.websocket.org/",
							 | 
						||
| 
								 | 
							
								                                    sockopt=((socket.IPPROTO_TCP, socket.TCP_NODELAY, 1),), class_=MyWebSocket)
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        FAQ
							 | 
						||
| 
								 | 
							
								        ===
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        How to disable ssl cert verification?
							 | 
						||
| 
								 | 
							
								        -------------------------------------
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        Please set sslopt to {"cert_reqs": ssl.CERT_NONE}.
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        WebSocketApp sample
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        .. code:: python
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								            ws = websocket.WebSocketApp("wss://echo.websocket.org")
							 | 
						||
| 
								 | 
							
								            ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        create_connection sample
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        .. code:: python
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								            ws = websocket.create_connection("wss://echo.websocket.org",
							 | 
						||
| 
								 | 
							
								              sslopt={"cert_reqs": ssl.CERT_NONE})
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        WebSocket sample
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        .. code:: python
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								            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
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        .. code:: python
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								            ws = websocket.WebSocketApp("wss://echo.websocket.org")
							 | 
						||
| 
								 | 
							
								            ws.run_forever(sslopt={"check_hostname": False})
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        create_connection sample
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        .. code:: python
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								            ws = websocket.create_connection("wss://echo.websocket.org",
							 | 
						||
| 
								 | 
							
								              sslopt={"check_hostname": False})
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        WebSocket sample
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        .. code:: python
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								            ws = websocket.WebSocket(sslopt={"check_hostname": False})
							 | 
						||
| 
								 | 
							
								            ws.connect("wss://echo.websocket.org")
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        How to enable `SNI <http://en.wikipedia.org/wiki/Server_Name_Indication>`_?
							 | 
						||
| 
								 | 
							
								        ---------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        SNI support is available for Python 2.7.9+ and 3.2+. It will be enabled automatically whenever possible.
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        Sub Protocols.
							 | 
						||
| 
								 | 
							
								        --------------
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        The server needs to support sub protocols, please set the subprotocol like this.
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        Subprotocol sample
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        .. code:: python
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								            ws = websocket.create_connection("ws://example.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
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								Keywords: websockets
							 | 
						||
| 
								 | 
							
								Platform: UNKNOWN
							 | 
						||
| 
								 | 
							
								Classifier: Development Status :: 4 - Beta
							 | 
						||
| 
								 | 
							
								Classifier: License :: OSI Approved :: BSD License
							 | 
						||
| 
								 | 
							
								Classifier: Programming Language :: Python
							 | 
						||
| 
								 | 
							
								Classifier: Programming Language :: Python :: 2
							 | 
						||
| 
								 | 
							
								Classifier: Programming Language :: Python :: 2.6
							 | 
						||
| 
								 | 
							
								Classifier: Programming Language :: Python :: 2.7
							 | 
						||
| 
								 | 
							
								Classifier: Programming Language :: Python :: 3
							 | 
						||
| 
								 | 
							
								Classifier: Programming Language :: Python :: 3.4
							 | 
						||
| 
								 | 
							
								Classifier: Programming Language :: Python :: 3.5
							 | 
						||
| 
								 | 
							
								Classifier: Programming Language :: Python :: 3.6
							 | 
						||
| 
								 | 
							
								Classifier: Programming Language :: Python :: 3.7
							 | 
						||
| 
								 | 
							
								Classifier: Operating System :: MacOS :: MacOS X
							 | 
						||
| 
								 | 
							
								Classifier: Operating System :: POSIX
							 | 
						||
| 
								 | 
							
								Classifier: Operating System :: Microsoft :: Windows
							 | 
						||
| 
								 | 
							
								Classifier: Topic :: Internet
							 | 
						||
| 
								 | 
							
								Classifier: Topic :: Software Development :: Libraries :: Python Modules
							 | 
						||
| 
								 | 
							
								Classifier: Intended Audience :: Developers
							 | 
						||
| 
								 | 
							
								Requires-Python: >=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
							 |