Revision history for Perl module Net::WebSocket 0.24 Wed Oct 20 2021 - BUG FIX: We no longer warn if the peer closes without a close code. 0.23 Mon Jun 21 2021 - BUG FIX: We no longer send an extra ping after excess unanswered pings. 0.22 Wed Jun 24 2020 - Respond to invalid close frames with PROTOCOL_ERROR close. - Tighten validation for close codes (reject 5000-9999). - Fix test reliability problem. 0.21 Fri May 24 2019 - Supply missing “MockReader” module for demos. - Suppress warning when empty “code” and “reason” are both given to Net::WebSocket::Frame::close constructor. - Fix typo in BadHTTPStatus exception. - Require a current IO::Framed version. - Allow a “headers” argument to handshake header stringifier. This replaces the previously-suggested (hacky) substr(). - Add a test for close frames. - POD fixes (thank you, MANWAR!) - Improve wscat.pl demo script. - Change tests to use Test::FailWarnings rather than Test::NoWarnings 0.20 Wed Apr 24 2019 - Fix test that fails now that X::Tiny no longer uses Module::Load. - Switch from Module::Load to Module::Runtime. - Replace README.pod with README.md. 0.19 Fri Aug 24 2018 - Fix LICENSE file (again) 0.18 Fri Aug 24 2018 - Refactor of Endpoint’s defragmenting logic to potentially be useful without the HTTP-derived handshake. - Fix LICENSE file. 0.17 Sat Mar 31 2018 - Remove Text::Control dependency (and large files) from new fragmentation test 0.16 Fri Mar 30 2018 - Fix fragmentation bug: frames of a fragmented message all had the same meta-parts. 0.15 Fri Mar 16 2018 - Copyright update (no functional changes) 0.14 Fri Jan 26 2018 - Documentation tweaks/cleanup 0.13 Fri Jan 5 2018 - Test fix - no production changes 0.12 Wed Jan 3 2018 - Added create_message() convenience method in Endpoint.pm - Reduce use of Module::Load, with an eye to potential removal 0.11 Sun Dec 17 2017 - (Really) fix “large” frame size encoding on 32-bit perls, add test. - Check for warnings in tests. - Fix warning in 5.10 on length(undef) 0.1 Fri Dec 15 2017 - MINOR BREAKING: All messages are now Net::WebSocket::Message instances; the ::text and ::binary subclasses are removed. They weren’t useful, and they complicated support for custom frame/message types. - Fix frame RSV methods, and add tests. - Fix Endpoint auto-response to close frames to use the correct masking. - Use exception objects for remaining server handshake problems. - Make Sec-WebSocket-Key validation more accurate. - New, separate exception type for when a data frame arrives after an unfinished message. - is_control_frame() method is renamed to is_control(). (The old name is also preserved for legacy compatibility.) Message objects have the same method, so now frames and messages are more nearly interchangeable. - Lots of inert code is now removed. - Lots of tests added, especially against Endpoint and Handshake. - Ping messages now count from 1 rather than 0. - This file is now in chronological-descending order. 0.063 Wed Dec 13 2017 - Fix frame ->to_bytes() logic for large frames on 32-bit perls. 0.062 Wed Dec 13 2017 - Fix Parser.pm bug that corrupted parsed frames’ to_bytes() representation. - Fix compatibility with reader objects that don’t die() on empty read. - Fix spurious warnings when creating close frames via code/reason. - Add SERVICE_RESTART, TRY_AGAIN_LATER, and BAD_GATEWAY statuses. - Remove more old/inaccurate documentation in Endpoint.pm. - Clarify (intended) divergence from RFC vis-à-vis 1005 status codes. - Document do_not_die_on_close(). 0.061 Thu Nov 30 2017 - Copyright update - A few other documentation tweaks 0.06 Thu Nov 30 2017 - Normalize naming conventions for frame classes. - Have frames receive “payload” instead of “payload_sr”. 0.054 Wed Nov 29 2017 - Use Digest::SHA1 instead of Digest::SHA (SHA1 is lighter) - Tweak Makefile.PL dependencies 0.053 Thu Nov 9 2017 - Update tests and docs for up-to-date IO::Framed syntax - Add README.pod 0.052 Sat Nov 4 2017 - Perl 5.12 and 5.10 are now supported. - Fix exception creation boo-boos, added tests. 0.051 Tue Oct 24 2017 - No code changed; documentation updated. 0.05 Tue Oct 24 2017 - PMCE support, including permessage-deflate - Major revamp of handshake logic: Net::WebSocket can now handle the entire handshake. 0.04 Tue Sep 26 2017 - Support extensions in handshake. - Allow get_next_message() not to throw an exception on a close frame. - Add received_close_frame() and sent_close_frame() methods. - Further documentation updates to accommodate 0.03 API changes - Replace more plain exceptions with objects 0.031 Tue May 9 2017 - Sync documentation with 0.03 API changes - Document SERVER_ERROR anomaly re RFC erratum - Straighten out a bit of POD in the main distro docs 0.03 Wed May 3 2017 - BREAKING: Endpoint’s “out” parameter must now be an instance of IO::Framed::Write (or implement the same behavior). - BREAKING: Parse’s parameter must now implement IO::Framed::Read. - BREAKING: Because we now farm the I/O out to IO::Framed (or whatever replacement class you may prefer), some of the thrown exceptions are changed: - Net::WebSocket::X::ReadFilehandle is gone. If you use IO::Framed, you’ll now receive IO::Framed::X::ReadError - Net::WebSocket::X::EmptyRead is gone. If you use IO::Framed, you’ll now receive IO::Framed::X::EmptyRead. - BREAKING: I’ve removed the before_send_control_frame() handler. - Net::WebSocket::Parser now instantiates the “target” frame class object, not the base Net::WebSocket::Frame class. So there’s no more of the AUTOLOAD shenanigans of before. - Removed the Bytes::Random::Secure::Tiny dependency. It doesn’t seem we really need cryptographically strong random numbers for masking or handshakes. - Frame I/O logic is now distributed separately as IO::Framed. It’s not a strict dependency of this library, but you’re probably going to want it nonetheless, unless you want to reimplement that logic yourself. - EINTR-trapping logic is now distributed separatedly as IO::SigGuard. (… which is used in IO::Framed) - Added documentation for Net::WebSocket::Streamer - Refactor ping handling behavior into its own module. It could be reusable potentially? - Demos now favor IO::Events. - Shell server demo now included. Hook it up to a nice JavaScript terminal emulator like xterm.js, and impress all your friends. :) 0.023 Sat Apr 22 2017 - Fix another test dependency. 0.022 Sat Apr 22 2017 - Remove stray Try::Tiny dependency 0.021 Thu Mar 23 2017 - Remove stray Call::Always usage in tests 0.02 Thu Mar 23 2017 - Add this Changes file. :) - BREAKING: Rename Endpoint “timeout” method to “check_heartbeat”. - Fix missing Call::Context dependency. 0.01 Wed Mar 22 2017 - Initial release