Changes for version 0.03

  • 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.
  • 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. :)

Provides

in demo/lib/NWDemo.pm
in lib/Net/WebSocket/Base/ControlFrame.pm
in lib/Net/WebSocket/Base/DataFrame.pm
in lib/Net/WebSocket/Base/DataMessage.pm
in lib/Net/WebSocket/Base/ReadString.pm
in lib/Net/WebSocket/Base/Typed.pm
in lib/Net/WebSocket/Constants.pm
in lib/Net/WebSocket/Endpoint/Client.pm
in lib/Net/WebSocket/Frame/continuation.pm
in lib/Net/WebSocket/Frame/ping.pm
in lib/Net/WebSocket/Frame/pong.pm
in lib/Net/WebSocket/Handshake/Base.pm
in lib/Net/WebSocket/Mask.pm
in lib/Net/WebSocket/Masker/Client.pm
in lib/Net/WebSocket/Masker/Server.pm
in lib/Net/WebSocket/Message.pm
in lib/Net/WebSocket/Message/binary.pm
in lib/Net/WebSocket/Message/text.pm
in lib/Net/WebSocket/PingStore.pm
in lib/Net/WebSocket/Streamer/Client.pm
in lib/Net/WebSocket/X.pm
in lib/Net/WebSocket/X/BadAccept.pm
in lib/Net/WebSocket/X/BadArg.pm
in lib/Net/WebSocket/X/Base.pm
in lib/Net/WebSocket/X/ReceivedBadControlFrame.pm
in lib/Net/WebSocket/X/ReceivedClose.pm