summaryrefslogtreecommitdiff
path: root/systrace/catapult/telemetry/third_party/websocket-client/README.rst
diff options
context:
space:
mode:
Diffstat (limited to 'systrace/catapult/telemetry/third_party/websocket-client/README.rst')
-rw-r--r--systrace/catapult/telemetry/third_party/websocket-client/README.rst295
1 files changed, 183 insertions, 112 deletions
diff --git a/systrace/catapult/telemetry/third_party/websocket-client/README.rst b/systrace/catapult/telemetry/third_party/websocket-client/README.rst
index 320342b..22447a8 100644
--- a/systrace/catapult/telemetry/third_party/websocket-client/README.rst
+++ b/systrace/catapult/telemetry/third_party/websocket-client/README.rst
@@ -2,10 +2,13 @@
websocket-client
=================
+**Our repository has moved to https://github.com/websocket-client/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
============
@@ -14,176 +17,244 @@ License
Installation
=============
-This module is tested on only Python 2.7.
+This module is tested on Python 2.7 and Python 3.x.
Type "python setup.py install" or "pip install websocket-client" to install.
-This module does not depend on any other module.
+.. 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
===========================
-py3( https://github.com/liris/websocket-client/tree/py3 ) branch is for python 3.3. Every test case is passed.
-If you are using python3, please check it.
+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
+ 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()
-Example
-============
-Low Level API example::
+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 "Reeiving..."
+ print "Receiving..."
result = ws.recv()
print "Received '%s'" % result
ws.close()
If you want to customize socket options, set sockopt.
-sockopt example:
+sockopt example
+
+.. code:: python
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()
+ ws = create_connection("ws://echo.websocket.org/",
+ sockopt=((socket.IPPROTO_TCP, socket.TCP_NODELAY),))
-wsdump.py
+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
+
+ 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),), class_=MyWebSocket)
+
+
+FAQ
============
-wsdump.py is simple WebSocket test(debug) tool.
+How to disable ssl cert verification?
+----------------------------------------
-sample for echo.websocket.org::
+Please set sslopt to {"cert_reqs": ssl.CERT_NONE}.
- $ wsdump.py ws://echo.websocket.org/
- Press Ctrl+C to quit
- > Hello, WebSocket
- < Hello, WebSocket
- > How are you?
- < How are you?
+WebSocketApp sample
-Usage
----------
+.. code:: python
-usage::
- wsdump.py [-h] [-v [VERBOSE]] ws_url
+ ws = websocket.WebSocketApp("wss://echo.websocket.org")
+ ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})
-WebSocket Simple Dump Tool
+create_connection sample
-positional arguments:
- ws_url websocket url. ex. ws://echo.websocket.org/
+.. code:: python
-optional arguments:
- -h, --help show this help message and exit
+ ws = websocket.create_connection("wss://echo.websocket.org",
+ sslopt={"cert_reqs": ssl.CERT_NONE})
- -v VERBOSE, --verbose VERBOSE set verbose mode. If set to 1, show opcode. If set to 2, enable to trace websocket module
+WebSocket sample
-example::
+.. code:: python
- $ wsdump.py ws://echo.websocket.org/
- $ wsdump.py ws://echo.websocket.org/ -v
- $ wsdump.py ws://echo.websocket.org/ -vv
+ 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")
-ChangeLog
-============
-- v0.12.0
+How to enable `SNI <http://en.wikipedia.org/wiki/Server_Name_Indication>`_?
+---------------------------------------------------------------------------
- - support keep alive for WebSocketApp(ISSUE#34)
- - fix some SSL bugs(ISSUE#35, #36)
- - fix "Timing out leaves websocket library in bad state"(ISSUE#37)
- - fix "WebSocketApp.run_with_no_err() silently eats all exceptions"(ISSUE#38)
- - WebSocketTimeoutException will be raised for ws/wss timeout(ISSUE#40)
- - improve wsdump message(ISSUE#42)
- - support fragmentation message(ISSUE#43)
- - fix some bugs
+SNI support is available for Python 2.7.9+ and 3.2+. It will be enabled automatically whenever possible.
-- v0.11.0
- - Only log non-normal close status(ISSUE#31)
- - Fix default Origin isn't URI(ISSUE#32)
- - fileno support(ISSUE#33)
+Sub Protocols.
+----------------------------------------
-- v0.10.0
+The server needs to support sub protocols, please set the subprotocol like this.
- - allow to set HTTP Header to WebSocketApp(ISSUE#27)
- - fix typo in pydoc(ISSUE#28)
- - Passing a socketopt flag to the websocket constructor(ISSUE#29)
- - websocket.send fails with long data(ISSUE#30)
+Subprotocol sample
-- v0.9.0
+.. code:: python
- - allow to set opcode in WebSocketApp.send(ISSUE#25)
- - allow to modify Origin(ISSUE#26)
+ ws = websocket.create_connection("ws://exapmle.com/websocket", subprotocols=["binary", "base64"])
-- v0.8.0
- - many bug fix
- - some performance improvement
-- v0.7.0
+wsdump.py
+============
- - fixed problem to read long data.(ISSUE#12)
- - fix buffer size boundary violation
+wsdump.py is simple WebSocket test(debug) tool.
-- v0.6.0
+sample for echo.websocket.org::
- - Patches: UUID4, self.keep_running, mask_key (ISSUE#11)
- - add wsdump.py tool
+ $ wsdump.py ws://echo.websocket.org/
+ Press Ctrl+C to quit
+ > Hello, WebSocket
+ < Hello, WebSocket
+ > How are you?
+ < How are you?
-- v0.5.2
+Usage
+---------
- - fix Echo App Demo Throw Error: 'NoneType' object has no attribute 'opcode (ISSUE#10)
+usage::
-- v0.5.1
+ wsdump.py [-h] [-v [VERBOSE]] ws_url
+
+WebSocket Simple Dump Tool
- - delete invalid print statement.
+positional arguments:
+ ws_url websocket url. ex. ws://echo.websocket.org/
-- v0.5.0
+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
- - support hybi-13 protocol.
+example::
-- v0.4.1
+ $ wsdump.py ws://echo.websocket.org/
+ $ wsdump.py ws://echo.websocket.org/ -v
+ $ wsdump.py ws://echo.websocket.org/ -vv
- - fix incorrect custom header order(ISSUE#1)
-