Class: WebSocket::Message
- Inherits:
-
Object
- Object
- WebSocket::Message
- Defined in:
- lib/websocket/message.rb
Instance Attribute Summary collapse
-
#mask_key ⇒ Object
readonly
Returns the value of attribute mask_key.
-
#payload ⇒ Object
readonly
Returns the value of attribute payload.
-
#status_code ⇒ Object
readonly
Returns the value of attribute status_code.
-
#status_message ⇒ Object
readonly
Returns the value of attribute status_message.
-
#type ⇒ Object
readonly
Returns the value of attribute type.
Class Method Summary collapse
-
.close(status_code = nil, reason = nil) ⇒ Object
Return a new close message.
-
.ping(payload = '') ⇒ Object
Return a new ping message.
-
.pong(payload = '') ⇒ Object
Return a new pong message.
Instance Method Summary collapse
- #control_frame? ⇒ Boolean
-
#initialize(message = '', type = :text, status_code = nil) ⇒ Message
constructor
A new instance of Message.
- #mask! ⇒ Object
- #masked? ⇒ Boolean
- #payload_length ⇒ Object
- #status ⇒ Object
- #to_data ⇒ Object
- #write(io) ⇒ Object
Constructor Details
#initialize(message = '', type = :text, status_code = nil) ⇒ Message
Returns a new instance of Message.
28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/websocket/message.rb', line 28 def initialize( = '', type = :text, status_code = nil) @type = type @payload = if status_code @status_code = status_code @status_message = [status_code, ].pack('S<a*') else .force_encoding("ASCII-8BIT") if end end |
Instance Attribute Details
#mask_key ⇒ Object (readonly)
Returns the value of attribute mask_key.
3 4 5 |
# File 'lib/websocket/message.rb', line 3 def mask_key @mask_key end |
#payload ⇒ Object (readonly)
Returns the value of attribute payload.
3 4 5 |
# File 'lib/websocket/message.rb', line 3 def payload @payload end |
#status_code ⇒ Object (readonly)
Returns the value of attribute status_code.
3 4 5 |
# File 'lib/websocket/message.rb', line 3 def status_code @status_code end |
#status_message ⇒ Object (readonly)
Returns the value of attribute status_message.
3 4 5 |
# File 'lib/websocket/message.rb', line 3 def @status_message end |
#type ⇒ Object (readonly)
Returns the value of attribute type.
3 4 5 |
# File 'lib/websocket/message.rb', line 3 def type @type end |
Class Method Details
.close(status_code = nil, reason = nil) ⇒ Object
Return a new close message
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/websocket/message.rb', line 16 def self.close(status_code = nil, reason = nil) if status_code && STATUS_CODES[status_code] == nil raise ArgumentError.new('Invalid status') end if reason && status_code == nil raise ArgumentError.new("Can't set a status message without status code") end new(reason, :close, status_code) end |
.ping(payload = '') ⇒ Object
Return a new ping message
6 7 8 |
# File 'lib/websocket/message.rb', line 6 def self.ping(payload = '') new(payload, :ping) end |
.pong(payload = '') ⇒ Object
Return a new pong message
11 12 13 |
# File 'lib/websocket/message.rb', line 11 def self.pong(payload = '') new(payload, :pong) end |
Instance Method Details
#control_frame? ⇒ Boolean
63 64 65 |
# File 'lib/websocket/message.rb', line 63 def control_frame? [:close, :ping, :pong].include?(type) end |
#mask! ⇒ Object
41 42 43 44 45 |
# File 'lib/websocket/message.rb', line 41 def mask! @second_byte = second_byte | 0b10000000 # Set masked bit @mask_key = Random.new.bytes(4) @payload = WebSocket.mask(@payload, @mask_key) end |
#masked? ⇒ Boolean
51 52 53 |
# File 'lib/websocket/message.rb', line 51 def masked? second_byte & 0b10000000 != 0 end |
#payload_length ⇒ Object
47 48 49 |
# File 'lib/websocket/message.rb', line 47 def payload_length @payload ? @payload.length : 0 end |
#status ⇒ Object
67 68 69 |
# File 'lib/websocket/message.rb', line 67 def status STATUS_CODES[status_code] end |
#to_data ⇒ Object
55 56 57 |
# File 'lib/websocket/message.rb', line 55 def to_data to_a.pack(pack_format) end |
#write(io) ⇒ Object
59 60 61 |
# File 'lib/websocket/message.rb', line 59 def write(io) io << to_data end |