| OLD | NEW |
| (Empty) |
| 1 ================= | |
| 2 websocket-client | |
| 3 ================= | |
| 4 | |
| 5 websocket-client module is WebSocket client for python. This provide the low le
vel APIs for WebSocket. All APIs are the synchronous functions. | |
| 6 | |
| 7 websocket-client supports only hybi-13. | |
| 8 | |
| 9 License | |
| 10 ============ | |
| 11 | |
| 12 - LGPL | |
| 13 | |
| 14 Installation | |
| 15 ============= | |
| 16 | |
| 17 This module is tested on only Python 2.7. | |
| 18 | |
| 19 Type "python setup.py install" or "pip install websocket-client" to install. | |
| 20 | |
| 21 This module does not depend on any other module. | |
| 22 | |
| 23 How about Python 3 | |
| 24 =========================== | |
| 25 | |
| 26 py3( https://github.com/liris/websocket-client/tree/py3 ) branch is for python 3
.3. Every test case is passed. | |
| 27 If you are using python3, please check it. | |
| 28 | |
| 29 Example | |
| 30 ============ | |
| 31 | |
| 32 Low Level API example:: | |
| 33 | |
| 34 from websocket import create_connection | |
| 35 ws = create_connection("ws://echo.websocket.org/") | |
| 36 print "Sending 'Hello, World'..." | |
| 37 ws.send("Hello, World") | |
| 38 print "Sent" | |
| 39 print "Reeiving..." | |
| 40 result = ws.recv() | |
| 41 print "Received '%s'" % result | |
| 42 ws.close() | |
| 43 | |
| 44 If you want to customize socket options, set sockopt. | |
| 45 | |
| 46 sockopt example: | |
| 47 | |
| 48 from websocket import create_connection | |
| 49 ws = create_connection("ws://echo.websocket.org/". | |
| 50 sockopt=((socket.IPPROTO_TCP, socket.TCP_NODELAY),)
) | |
| 51 | |
| 52 | |
| 53 JavaScript websocket-like API example:: | |
| 54 | |
| 55 import websocket | |
| 56 import thread | |
| 57 import time | |
| 58 | |
| 59 def on_message(ws, message): | |
| 60 print message | |
| 61 | |
| 62 def on_error(ws, error): | |
| 63 print error | |
| 64 | |
| 65 def on_close(ws): | |
| 66 print "### closed ###" | |
| 67 | |
| 68 def on_open(ws): | |
| 69 def run(*args): | |
| 70 for i in range(3): | |
| 71 time.sleep(1) | |
| 72 ws.send("Hello %d" % i) | |
| 73 time.sleep(1) | |
| 74 ws.close() | |
| 75 print "thread terminating..." | |
| 76 thread.start_new_thread(run, ()) | |
| 77 | |
| 78 | |
| 79 if __name__ == "__main__": | |
| 80 websocket.enableTrace(True) | |
| 81 ws = websocket.WebSocketApp("ws://echo.websocket.org/", | |
| 82 on_message = on_message, | |
| 83 on_error = on_error, | |
| 84 on_close = on_close) | |
| 85 ws.on_open = on_open | |
| 86 | |
| 87 ws.run_forever() | |
| 88 | |
| 89 | |
| 90 wsdump.py | |
| 91 ============ | |
| 92 | |
| 93 wsdump.py is simple WebSocket test(debug) tool. | |
| 94 | |
| 95 sample for echo.websocket.org:: | |
| 96 | |
| 97 $ wsdump.py ws://echo.websocket.org/ | |
| 98 Press Ctrl+C to quit | |
| 99 > Hello, WebSocket | |
| 100 < Hello, WebSocket | |
| 101 > How are you? | |
| 102 < How are you? | |
| 103 | |
| 104 Usage | |
| 105 --------- | |
| 106 | |
| 107 usage:: | |
| 108 wsdump.py [-h] [-v [VERBOSE]] ws_url | |
| 109 | |
| 110 WebSocket Simple Dump Tool | |
| 111 | |
| 112 positional arguments: | |
| 113 ws_url websocket url. ex. ws://echo.websocket.org/ | |
| 114 | |
| 115 optional arguments: | |
| 116 -h, --help show this help message and exit | |
| 117 | |
| 118 -v VERBOSE, --verbose VERBOSE set verbose mode. If set to 1, show opcode. I
f set to 2, enable to trace websocket module | |
| 119 | |
| 120 example:: | |
| 121 | |
| 122 $ wsdump.py ws://echo.websocket.org/ | |
| 123 $ wsdump.py ws://echo.websocket.org/ -v | |
| 124 $ wsdump.py ws://echo.websocket.org/ -vv | |
| 125 | |
| 126 ChangeLog | |
| 127 ============ | |
| 128 | |
| 129 - v0.12.0 | |
| 130 | |
| 131 - support keep alive for WebSocketApp(ISSUE#34) | |
| 132 - fix some SSL bugs(ISSUE#35, #36) | |
| 133 - fix "Timing out leaves websocket library in bad state"(ISSUE#37) | |
| 134 - fix "WebSocketApp.run_with_no_err() silently eats all exceptions"(ISSUE#38) | |
| 135 - WebSocketTimeoutException will be raised for ws/wss timeout(ISSUE#40) | |
| 136 - improve wsdump message(ISSUE#42) | |
| 137 - support fragmentation message(ISSUE#43) | |
| 138 - fix some bugs | |
| 139 | |
| 140 - v0.11.0 | |
| 141 | |
| 142 - Only log non-normal close status(ISSUE#31) | |
| 143 - Fix default Origin isn't URI(ISSUE#32) | |
| 144 - fileno support(ISSUE#33) | |
| 145 | |
| 146 - v0.10.0 | |
| 147 | |
| 148 - allow to set HTTP Header to WebSocketApp(ISSUE#27) | |
| 149 - fix typo in pydoc(ISSUE#28) | |
| 150 - Passing a socketopt flag to the websocket constructor(ISSUE#29) | |
| 151 - websocket.send fails with long data(ISSUE#30) | |
| 152 | |
| 153 | |
| 154 - v0.9.0 | |
| 155 | |
| 156 - allow to set opcode in WebSocketApp.send(ISSUE#25) | |
| 157 - allow to modify Origin(ISSUE#26) | |
| 158 | |
| 159 - v0.8.0 | |
| 160 | |
| 161 - many bug fix | |
| 162 - some performance improvement | |
| 163 | |
| 164 - v0.7.0 | |
| 165 | |
| 166 - fixed problem to read long data.(ISSUE#12) | |
| 167 - fix buffer size boundary violation | |
| 168 | |
| 169 - v0.6.0 | |
| 170 | |
| 171 - Patches: UUID4, self.keep_running, mask_key (ISSUE#11) | |
| 172 - add wsdump.py tool | |
| 173 | |
| 174 - v0.5.2 | |
| 175 | |
| 176 - fix Echo App Demo Throw Error: 'NoneType' object has no attribute 'opcode (
ISSUE#10) | |
| 177 | |
| 178 - v0.5.1 | |
| 179 | |
| 180 - delete invalid print statement. | |
| 181 | |
| 182 - v0.5.0 | |
| 183 | |
| 184 - support hybi-13 protocol. | |
| 185 | |
| 186 - v0.4.1 | |
| 187 | |
| 188 - fix incorrect custom header order(ISSUE#1) | |
| 189 | |
| OLD | NEW |