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

new(args = {}) click to toggle source
# File lib/websocket/frame/incoming.rb, line 16
def initialize(args = {})
  @decoded = args[:decoded] || false
  super
end

Public Instance Methods

<<(data) click to toggle source

Add provided string as raw incoming frame. @param data [String] Raw frame

# File lib/websocket/frame/incoming.rb, line 31
def <<(data)
  @data << data
end
decoded?() click to toggle source

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?

# File lib/websocket/frame/incoming.rb, line 25
def decoded?
  @decoded
end
next() click to toggle source

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.

# File lib/websocket/frame/incoming.rb, line 39
def next
  decode_frame unless decoded?
end
to_s() click to toggle source

If decoded then this will return frame content. Otherwise it will return raw frame. @return [String] Data of frame

# File lib/websocket/frame/incoming.rb, line 45
def to_s
  @data
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.