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