Class: Rubycord::WebSocket
- Inherits:
-
Object
- Object
- Rubycord::WebSocket
- Defined in:
- lib/rubycord/websocket.rb
Overview
Utility wrapper class that abstracts an instance of WSCS. Useful should we decide that WSCS isn't good either - in that case we can just switch to something else
Instance Attribute Summary collapse
-
#close_handler ⇒ Object
readonly
Returns the value of attribute close_handler.
-
#error_handler ⇒ Object
readonly
Returns the value of attribute error_handler.
-
#message_handler ⇒ Object
readonly
Returns the value of attribute message_handler.
-
#open_handler ⇒ Object
readonly
Returns the value of attribute open_handler.
Instance Method Summary collapse
-
#close ⇒ Object
Close the WebSocket connection.
-
#initialize(endpoint, open_handler, message_handler, close_handler, error_handler) ⇒ WebSocket
constructor
Create a new WebSocket and connect to the given endpoint.
-
#send(data) ⇒ Object
Send data over this WebSocket.
-
#thread ⇒ Thread
The internal WSCS thread.
Constructor Details
#initialize(endpoint, open_handler, message_handler, close_handler, error_handler) ⇒ WebSocket
Create a new WebSocket and connect to the given endpoint.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/rubycord/websocket.rb', line 29 def initialize(endpoint, open_handler, , close_handler, error_handler) Rubycord::LOGGER.debug "Using WSCS version: #{::WebSocket::Client::Simple::VERSION}" @open_handler = open_handler @message_handler = @close_handler = close_handler @error_handler = error_handler instance = self # to work around WSCS's weird way of handling blocks @client = ::WebSocket::Client::Simple.connect(endpoint) do |ws| ws.on(:open) { instance.open_handler.call } ws.on(:message) do |msg| # If the message has a code attribute, it is in reality a close message if msg.code instance.close_handler.call(msg) else instance..call(msg.data) end end ws.on(:close) { |err| instance.close_handler.call(err) } ws.on(:error) { |err| instance.error_handler.call(err) } end end |
Instance Attribute Details
#close_handler ⇒ Object (readonly)
Returns the value of attribute close_handler.
17 18 19 |
# File 'lib/rubycord/websocket.rb', line 17 def close_handler @close_handler end |
#error_handler ⇒ Object (readonly)
Returns the value of attribute error_handler.
17 18 19 |
# File 'lib/rubycord/websocket.rb', line 17 def error_handler @error_handler end |
#message_handler ⇒ Object (readonly)
Returns the value of attribute message_handler.
17 18 19 |
# File 'lib/rubycord/websocket.rb', line 17 def @message_handler end |
#open_handler ⇒ Object (readonly)
Returns the value of attribute open_handler.
17 18 19 |
# File 'lib/rubycord/websocket.rb', line 17 def open_handler @open_handler end |
Instance Method Details
#close ⇒ Object
Close the WebSocket connection
61 62 63 |
# File 'lib/rubycord/websocket.rb', line 61 def close @client.close end |
#send(data) ⇒ Object
Send data over this WebSocket
56 57 58 |
# File 'lib/rubycord/websocket.rb', line 56 def send(data) @client.send(data) end |
#thread ⇒ Thread
Returns the internal WSCS thread.
66 67 68 |
# File 'lib/rubycord/websocket.rb', line 66 def thread @client.thread end |