class WebSocket::Frame::Base

@abstract Subclass and override to implement custom frames

def error?

Returns:
  • (Boolean) - True if error is set
def error?
  !@error.nil?
end

def include_version

Returns:
  • (Boolean) - false if protocol number is unknown, otherwise true
def include_version
  @handler = case @version
             when 75..76 then Handler::Handler75.new(self)
             when 0..2 then Handler::Handler75.new(self)
             when 3 then Handler::Handler03.new(self)
             when 4 then Handler::Handler04.new(self)
             when 5..6 then Handler::Handler05.new(self)
             when 7..13 then Handler::Handler07.new(self)
             else raise WebSocket::Error::Frame::UnknownVersion
             end
end

def initialize(args = {})

Options Hash: (**args)
  • :version (Integer) -- Version of draft. Currently supported version are 75, 76 and 00-13.
  • :code (Integer) -- Code for close frame. Supported by drafts > 05.
  • :type (String) -- Type of frame - available types are "text", "binary", "ping", "pong" and "close"(support depends on draft version)
  • :data (String) -- default data for frame

Parameters:
  • args (Hash) -- Arguments for frame
def initialize(args = {})
  @type = args[:type].to_sym if args[:type]
  @code = args[:code]
  @data = Data.new(args[:data].to_s)
  @version = args[:version] || DEFAULT_VERSION
  @handler = nil
  include_version
end

def support_type?

Is selected type supported for selected handler?
def support_type?
  @handler.supported_frames.include?(@type)
end

def supported_frames

Implement in submodules
def supported_frames
  raise NotImplementedError
end