Package: dataplicity_websocket_client
dataplicity-websocket-clientThis is a fork ofhttps://github.com/websocket-client/websocket-clientIt contains a hot-fix for an issue with secure websockets. Unless you need that fix, you probably want the official release (https://pypi.python.org/pypi/websocket-client/0.40.0)websocket-clientOur repository has moved to https://github.com/websocket-client/websocket-clientwebsocket-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.LicenseLGPLInstallationThis 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 onsixbackports.ssl_match_hostname for Python 2.xHow about Python 3Now, we support python 3 on  single source code from version 0.14.0. Thanks, @battlemidget and @ralphbean.HTTP ProxySupport 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.exampleimportwebsocketws=websocket.WebSocket()ws.connect("ws://example.com/websocket",http_proxy_host="proxy_host_name",http_proxy_port=3128):ExamplesLong-lived connectionThis example is similar to how WebSocket code looks in browsers using JavaScript.importwebsocketimportthreadimporttimedefon_message(ws,message):printmessagedefon_error(ws,error):printerrordefon_close(ws):print"### closed ###"defon_open(ws):defrun(*args):foriinrange(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_openws.run_forever()Short-lived one-off send-receiveThis is if you want to communicate a short message and disconnect immediately when done.fromwebsocketimportcreate_connectionws=create_connection("ws://echo.websocket.org/")print"Sending 'Hello, World'..."ws.send("Hello, World")print"Sent"print"Receiving..."result=ws.recv()print"Received '%s'"%resultws.close()If you want to customize socket options, set sockopt.sockopt examplefromwebsocketimportcreate_connectionws=create_connection("ws://echo.websocket.org/",sockopt=((socket.IPPROTO_TCP,socket.TCP_NODELAY),))More advanced: Custom classYou can also write your own class for the connection, if you want to handle the nitty-gritty details yourself.fromwebsocketimportcreate_connection,WebSocketclassMyWebSocket(WebSocket):defrecv_frame(self):frame=super().recv_frame()print('yay! I got this frame: ',frame)returnframews=create_connection("ws://echo.websocket.org/",sockopt=((socket.IPPROTO_TCP,socket.TCP_NODELAY),),class_=MyWebSocket)FAQHow to disable ssl cert verification?Please set sslopt to {“cert_reqs”: ssl.CERT_NONE}.WebSocketApp samplews=websocket.WebSocketApp("wss://echo.websocket.org")ws.run_forever(sslopt={"cert_reqs":ssl.CERT_NONE})create_connection samplews=websocket.create_connection("wss://echo.websocket.org",sslopt={"cert_reqs":ssl.CERT_NONE})WebSocket samplews=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 samplews=websocket.WebSocketApp("wss://echo.websocket.org")ws.run_forever(sslopt={"check_hostname":False})create_connection samplews=websocket.create_connection("wss://echo.websocket.org",sslopt={"check_hostname":False})WebSocket samplews=websocket.WebSocket(sslopt={"check_hostname":False})ws.connect("wss://echo.websocket.org")How to enableSNI?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 samplews=websocket.create_connection("ws://exapmle.com/websocket",subprotocols=["binary","base64"])wsdump.pywsdump.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?Usageusage:wsdump.py [-h] [-v [VERBOSE]] ws_urlWebSocket Simple Dump Toolpositional arguments:ws_url                websocket url. ex. ws://echo.websocket.org/optional arguments:-h,--helpshow this help message and exitWebSocketApp-vVERBOSE,--verboseVERBOSEset verbose mode. If set to 1, show opcode. If set to 2, enable to trace websocket moduleexample:$ wsdump.py ws://echo.websocket.org/
$ wsdump.py ws://echo.websocket.org/ -v
$ wsdump.py ws://echo.websocket.org/ -vv