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. :)
Modules
WebSocket in Perl
Parse WebSocket from a filehandle
Send a stream easily over WebSocket
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