| ChangeLog | 
 | ============ | 
 |  | 
 | - 0.56.0 | 
 |  | 
 |  - Don't retry sockets with timeout set to 0(#536) | 
 |  | 
 | - 0.55.0 | 
 |  | 
 |   - Add response headers in WebSocketBadStatusException (#501) | 
 |   - Manually assigning WebSocket-Version (#506) | 
 |   - SSL socket handling fix (#474) | 
 |   - Let setup.py use the same license as LICENSE file (#517) | 
 |   - Ensure that "timeout" is passed down, when calling WebSocket.connect() (#513) | 
 |   - Retry connect on "Interrupted system call" (#528) | 
 |  | 
 | - 0.54.0 | 
 |  | 
 |   - Change license from LGPL to BSD. | 
 |   - Status return for WebSocketApp.run_forever() (#492) | 
 |   - Handle redirects in handshake (#491) | 
 |   - Make proxy_type option available in WebSocketApp.run_forever() (#486) | 
 |   - Fix typo in supress_origin (#485) | 
 |   - WebSocketApp's on_close never emits status code or reason (#479) | 
 |  | 
 | - 0.53.0 | 
 |  | 
 |   - on_open() missing 1 required positional argument: 'ws' (#471) | 
 |    | 
 | - 0.52.0 | 
 |  | 
 |   - fixed callback argument in _app.py (#468) | 
 |   - Fixing none compare bug in run_forever (#472) | 
 |   - Fix NoneType bug introduced by #386 fix (#476) | 
 |  | 
 | - 0.51.0 | 
 |  | 
 |   - revert "WebSocketApp class to make it inheritable (#442)" because of breaking the compatibily | 
 |  | 
 | - 0.50.0 | 
 |  | 
 |   - fixed pong before ping (#461) | 
 |   - pass proper arguments to method callbacks (#462) | 
 |  | 
 | - 0.49.0 | 
 |  | 
 |   - WebSocketApp class to make it inheritable (#442) | 
 |   - Add option to disable sending the Origin header (#459) | 
 |   - Websocket.close() meaning of "close status: XXXXX" (#414) | 
 |   - Enable multithreading protection with ping_interval (#448) | 
 |   - reset WebsocketApp.sock (#450) | 
 |   - websocket.enableTrace not working (#455) | 
 |   - AttributeError: 'module' object has no attribute 'NullHandler' (#443) | 
 |   - WebSocketBadStatusException "not enough arguments for format string" (#454) | 
 |   - handshake should deal with None in headers (#432) | 
 |  | 
 | - 0.48.0 | 
 |  | 
 |   - Add NullHandler to logger to fix python 2 issue. (#400) | 
 |   - Fix the issue that websocket status message may not present (#403) | 
 |   - Socket error not raised in nested try except in python2 (#408) | 
 |   - Load system default certificates if none are given (#415) | 
 |   - Fix waiting forever on ping/pong timeout (#411) | 
 |   - socks5 via pysocks support (#417) | 
 |   - v0.47.0 breaks ability to stop stream with `run_forever` (#410) | 
 |   - _http.py: fix windows proxy error due to socktype (#427) | 
 |  | 
 | - 0.47.0 | 
 |  | 
 |   - Fix socket constructor in _open_socket to use all relevant variables from getaddrinfo. (#383) | 
 |   - .send() method is very slow (#340) | 
 |   - cross-platform aync multi-client solution (#375) | 
 |   - Fix detecting timeouts with SSL in recv (#387) | 
 |   - Fix WebSocketApp does not poll for data correctly when using SSL (#384) | 
 |   - Fix Infinite ping/pong timeouts in WebSocketApp.run_forever (#395) | 
 |   - Added status message when HTTP can't be upgraded to WS (#399) | 
 |  | 
 | - 0.46.0 | 
 |  | 
 |   - fixed OSError on windows (#370) | 
 |   - fixed invalid character (#379) | 
 |  | 
 | - 0.45.0 | 
 |  | 
 |   - change license to LGP v2.1 | 
 |   - allow reuse of WebsocketApp.run_forever (#365) | 
 |   - Update example for python3 (#360) | 
 |   - add lock to recv function (#356) | 
 |   - Parse close frame response correctly when reason present (#354) | 
 |   - Fix SSL: SSLV3_ALERT_HANDSHAKE_FAILURE on Debian Stretch (#353) | 
 |   - Wrap socket.gaierror with subclass of WebsocketException (#352) | 
 |   - Resolve a proxy issue and a connection error (#345) | 
 |   - Allow empty Host header value (#369) | 
 |   - Fix undefined variable (#347) | 
 |   - fix: getting a value with the key 'ca_certs' in sslopt dict (#326) | 
 |  | 
 | - 0.44.0 | 
 |  | 
 |   -renames key in sslopt dict (#326) | 
 |  | 
 | - 0.43.0 | 
 |  | 
 |   - Unkown kwarg 'ca_cert' when calling ssl wrap_socket() (#326) | 
 |   - Race condition in WebSocket ping/pong (#327) | 
 |  | 
 | - 0.42.0 | 
 |  | 
 |   - Implement simple cookie jar(#292) | 
 |   - fix: when using pppoe redial will block.(#301) | 
 |   - Fix insecure_pythons list in setup.py(#304) | 
 |   - Support WEBSOCKET_CLIENT_CA_BUNDLE being directory(#307) | 
 |   - WebSocketPayloadException under high traffic and limited network connection(#306) | 
 |   - Not working --nocert parameter in wsdump.py(#315) | 
 |   - Avoid the app to block on close on certain systems (#320) | 
 |   - Fix warning is not defined. (#323) | 
 |  | 
 | - 0.41.0 | 
 |  | 
 |   - move to repository to https://github.com/websocket-client/websocket-client.git | 
 |   - _send_ping warning fails due to missing reference in _logging.__all__ (#294) | 
 |  | 
 | - 0.40.0 | 
 |   - Fix opcode -> op_code (#286) | 
 |  | 
 | - 0.39.0 | 
 |   - Shuffled around example code (#256) | 
 |   - _send_ping graceful error handling (#262) | 
 |   - Allow closing WebSocketApp with status/reason/timeout (#265) | 
 |   - Support universal wheels (#267) | 
 |   - _url: Added subnet IP address matching in no_proxy host detection (#270) | 
 |   - fixed Incorrect encoding in continued messages python3 (#261) | 
 |   - Pass headers for websocket handshake (#271) | 
 |   - setup.py: Import `logging` before calling it. (#272) | 
 |   - Implemented close code 1014 (#273) | 
 |   - Support CA bundle specified by environment variable (#279) | 
 |   - Response header values should not be converted to lower case (#264) | 
 |  | 
 | - 0.38.0 | 
 |   - Exclude port 443 from host http header (#248) | 
 |   - Cleanup code (#249) | 
 |   - Modify a code block directive in README (#250) | 
 |   - fixed ping/pong timeouet (#253) | 
 |  | 
 | - 0.37.0 | 
 |   - fixed failure that `websocket.create_connection` does not accept `origin` as a parameter (#246 ) | 
 |  | 
 | - 0.36.0 | 
 |   - added support for using custom connection class (#235) | 
 |   - use Named logger (#238) | 
 |   - implement ping/pong timeout (#241) | 
 |   - Corrects the syntax highlight code (#243) | 
 |   - fixed failure to join thread before it is started (#242) | 
 |  | 
 | - 0.35.0 | 
 |   - Prints timings in console (#217) | 
 |   - use inspect.getfullargspec with Python 3.x (#219) | 
 |   - Check that exception message is actually a string before trying for substring check (#224) | 
 |   - Use pre-initialized stream socket (#226) | 
 |   - fixed TypeError: cafile, capath and cadata cannot be all omitted (#227) | 
 |  | 
 | - 0.34.0 | 
 |  | 
 |   - Change import style (#203) | 
 |   - fix attribute error on the older python. (#215) | 
 |  | 
 | - 0.33.0 | 
 |  | 
 |   - fixed timeout+ssl error handling bug  on python 2.7.10 (#190) | 
 |   - add proxy support to wsdump.py (#194) | 
 |   - use wsaccel if available (#193) | 
 |   - add support for ssl cert chains to support client certs (#195) | 
 |   - fix string formatting in exception (#196) | 
 |   - fix typo in README.rst (#197) | 
 |   - introduce on_data callback to pass data type. (#198) | 
 |   - WebSocketBadStatusException for Handshake error (#199) | 
 |   - set close timeout (#192) | 
 |   - Map dict to headers list (#204) | 
 |   - support client certification (#207) | 
 |   - security improvement during handshake (#211) | 
 |   - improve logging of error from callback (#212) | 
 |  | 
 | - 0.32.0 | 
 |  | 
 |   - fix http proxy bug (#189) | 
 |  | 
 | - 0.31.0 | 
 |  | 
 |   - Avoid deprecated BaseException.message (#180) | 
 |   - Add travis builds (#182) | 
 |   - fixed wsdump to work with piped input (#183) | 
 |   - fixed output of wsdump.py with python3 (#185) | 
 |   - add raw mode to wsdump.py (#186) | 
 |  | 
 | - 0.30.0 | 
 |  | 
 |   - fixed if client is behind proxy (#169) | 
 |   - support SNI for python 2.7.9+ and 3.2+ (#172) | 
 |   - update Host HTTP header by user. (#171) | 
 |   - fix typo for isEnabledFor (#173) | 
 |   - can set verify_mode to CERT_NONE when check_hostname is enabled.(#175) | 
 |   - make websockets iterable (#178) | 
 |  | 
 | - 0.29.0 | 
 |  | 
 |   - fixed ssl socket bug | 
 |  | 
 | - 0.28.0 | 
 |  | 
 |   - Fix erroneous argument shadowing(#168) | 
 |  | 
 | - 0.27.0 | 
 |  | 
 |   - remove unittest2 requirements for python 2.6 (#156) | 
 |   - fixed subprotocol case during header validation (#158) | 
 |   - get response status and headers (#160) | 
 |   - fix out-of-memory due to fragmentation when receiving a very large frame(#163) | 
 |   - fix error if the payload data is nothing.(#166) | 
 |   - refactoring. | 
 |  | 
 | - 0.26.0 | 
 |  | 
 |   - all WebSocketException provide message string (#152) | 
 |   - fixed tests fail when not connected to the network (#155) | 
 |   - Add command line options and handle closed socket to wsdump.py (#153) | 
 |  | 
 | - 0.25.0 | 
 |  | 
 |   - fixed for Python 2.6(#151) | 
 |  | 
 | - 0.24.0 | 
 |  | 
 |   - Supporting http-basic auth in WebSocketApp (#143) | 
 |   - fix failure of test.testInternalRecvStrict(#141) | 
 |   - skip utf8 validation by skip_utf8_validation argument (#137) | 
 |   - WebsocketProxyException will be raised if we got error about proxy.(#138) | 
 |  | 
 | - 0.23.0 | 
 |  | 
 |   - Remove spurious print statement. (#135) | 
 |  | 
 | - 0.22.0 | 
 |  | 
 |   - Fix not thread-safe of Websocket.close() (#120) | 
 |   - Try to get proxy info from environment if not explicitly provided (#124) | 
 |   - support proxy basic authentication. (#125) | 
 |   - Fix NoneType exception at WebsocketApp.send (#126) | 
 |   - not use proxy for localhost (#132) | 
 |  | 
 | - 0.21.0 | 
 |  | 
 |   - Check for socket before attempting to close (#115) | 
 |   - Enable turning off SSL verification in wsdump.py(#116) | 
 |   - Enable to set subprotocol(#118) | 
 |   - Better support for Autobahn test suite (http://autobahn.ws/testsuite) (#117) | 
 |  | 
 | - v0.20.0 | 
 |  | 
 |   - fix typo. | 
 |  | 
 | - v0.19.0 | 
 |  | 
 |   - suppress close event message(#107) | 
 |   - detect socket connection state(#109) | 
 |   - support for code and reason in on_close callback(#111) | 
 |   - continuation frame handling seems suspicious(#113) | 
 |  | 
 | - v0.18.0 | 
 |  | 
 |   -  allow override of match_hostname usage on ssl (#105) | 
 |  | 
 | - v0.17.0 | 
 |  | 
 |   - can't set timeout on a standing websocket connection (#102) | 
 |   - fixed local variable 'error' referenced before assignment (#102, #98) | 
 |  | 
 | - v0.16.0 | 
 |  | 
 |   - lock some method for multithread. (#92) | 
 |   - disable cert verification. (#89) | 
 |  | 
 | - v0.15.0 | 
 |  | 
 |   - fixed exception when send a large message (#84) | 
 |  | 
 | - v0.14.1 | 
 |  | 
 |   - fixed to work on Python2.6 (#83) | 
 |  | 
 | - v0.14.0 | 
 |  | 
 |   - Support python 3(#73) | 
 |   - Support IPv6(#77) | 
 |   - Support explicit web proxy(#57) | 
 |   - specify cookie in connect method option(#82) | 
 |  | 
 | - v0.13.0 | 
 |  | 
 |   - MemoryError when receiving large amount of data (~60 MB) at once(ISSUE#59) | 
 |   - Controlling fragmentation(ISSUE#55) | 
 |   - server certificate validation(ISSUE#56) | 
 |   - PyPI tarball is missing test_websocket.py(ISSUE#65) | 
 |   - Payload length encoding bug(ISSUE#58) | 
 |   - disable Nagle algorithm by default(ISSUE#41) | 
 |   - Better event loop in WebSocketApp(ISSUE#63) | 
 |   - Skip tests that require Internet access by default(ISSUE#66) | 
 |  | 
 | - v0.12.0 | 
 |  | 
 |   - 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 | 
 |  | 
 | - v0.11.0 | 
 |  | 
 |   - Only log non-normal close status(ISSUE#31) | 
 |   - Fix default Origin isn't URI(ISSUE#32) | 
 |   - fileno support(ISSUE#33) | 
 |  | 
 | - v0.10.0 | 
 |  | 
 |   - 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) | 
 |  | 
 |  | 
 | - v0.9.0 | 
 |  | 
 |   - allow to set opcode in WebSocketApp.send(ISSUE#25) | 
 |   - allow to modify Origin(ISSUE#26) | 
 |  | 
 | - v0.8.0 | 
 |  | 
 |   - many bug fix | 
 |   - some performance improvement | 
 |  | 
 | - v0.7.0 | 
 |  | 
 |   - fixed problem to read long data.(ISSUE#12) | 
 |   - fix buffer size boundary violation | 
 |  | 
 | - v0.6.0 | 
 |  | 
 |   - Patches: UUID4, self.keep_running, mask_key (ISSUE#11) | 
 |   - add wsdump.py tool | 
 |  | 
 | - v0.5.2 | 
 |  | 
 |   - fix Echo App Demo Throw Error: 'NoneType' object has no attribute 'opcode  (ISSUE#10) | 
 |  | 
 | - v0.5.1 | 
 |  | 
 |   - delete invalid print statement. | 
 |  | 
 | - v0.5.0 | 
 |  | 
 |   - support hybi-13 protocol. | 
 |  | 
 | - v0.4.1 | 
 |  | 
 |   - fix incorrect custom header order(ISSUE#1) |