class WebSocket::Frame::Incoming
Construct or parse incoming WebSocket
Frame
. @note You should NEVER use this class directly - use Client
or Server
subclasses instead, as they contain additional frame options(i.e. Client-side masking in draft 04)
@example
frame = WebSocket::Frame::Incoming::Server.new(version: @handshake.version) frame << "\x81\x05\x48\x65\x6c\x6c\x6f\x81\x06\x77\x6f\x72\x6c\x64\x21" frame.next # "Hello" frame.next # "world!""
Public Class Methods
Source
# File lib/websocket/frame/incoming.rb, line 17 def initialize(args = {}) @decoded = args[:decoded] || false super end
WebSocket::Frame::Base::new
Public Instance Methods
Source
# File lib/websocket/frame/incoming.rb, line 32 def <<(data) @data << data end
Add provided string as raw incoming frame. @param data [String] Raw frame
Source
# File lib/websocket/frame/incoming.rb, line 26 def decoded? @decoded end
If data is still encoded after receiving then this is false. After calling “next” you will receive another instance of incoming frame, but with data decoded - this function will return true and to_s
will return frame content instead of raw data. @return [Boolean] If frame already decoded?
Source
# File lib/websocket/frame/incoming.rb, line 40 def next @handler.decode_frame unless decoded? end
Return next complete frame. This function will merge together splitted frames and return as combined content. Check error
if nil received to check for eventual parsing errors @return [WebSocket::Frame::Incoming] Single incoming frame or nil if no complete frame is available.