Sha256: 43eeed10e0debed37c5600431b23a80049b45b553d1814d148eb7b4e9f0a9cee
Contents?: true
Size: 1.69 KB
Versions: 1
Compression:
Stored size: 1.69 KB
Contents
# encoding: binary module WebSocket module Frame module Handler class Handler07 < Handler05 # Hash of frame names and it's opcodes FRAME_TYPES = { :continuation => 0, :text => 1, :binary => 2, :close => 8, :ping => 9, :pong => 10, } # Hash of frame opcodes and it's names FRAME_TYPES_INVERSE = FRAME_TYPES.invert def encode_frame if @frame.type == :close code = @frame.code || 1000 @frame.data = Data.new([code].pack('n') + @frame.data.to_s) @frame.code = nil end super end def decode_frame result = super if has_close_code?(result) code = result.data.slice!(0..1) result.code = code.unpack('n').first end result end private def has_close_code?(frame) frame && frame.type == :close && !frame.data.empty? end # Convert frame type name to opcode # @param [Symbol] frame_type Frame type name # @return [Integer] opcode or nil # @raise [WebSocket::Error] if frame opcode is not known def type_to_opcode(frame_type) FRAME_TYPES[frame_type] || raise(WebSocket::Error::Frame::UnknownFrameType) end # Convert frame opcode to type name # @param [Integer] opcode Opcode # @return [Symbol] Frame type name or nil # @raise [WebSocket::Error] if frame type name is not known def opcode_to_type(opcode) FRAME_TYPES_INVERSE[opcode] || raise(WebSocket::Error::Frame::UnknownOpcode) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
websocket-1.1.3 | lib/websocket/frame/handler/handler07.rb |