Class: RailsLiveReload::WebSocket::Base
- Inherits:
-
Object
- Object
- RailsLiveReload::WebSocket::Base
- Defined in:
- lib/rails_live_reload/web_socket/base.rb
Overview
This class is strongly based on ActionCable github.com/rails/rails/blob/v7.0.3/actioncable/lib/action_cable/connection/base.rb
Instance Attribute Summary collapse
-
#dt ⇒ Object
readonly
Returns the value of attribute dt.
-
#env ⇒ Object
readonly
Returns the value of attribute env.
-
#files ⇒ Object
readonly
Returns the value of attribute files.
-
#protocol ⇒ Object
readonly
Returns the value of attribute protocol.
-
#request ⇒ Object
readonly
Returns the value of attribute request.
-
#server ⇒ Object
readonly
Returns the value of attribute server.
Instance Method Summary collapse
- #beat ⇒ Object
- #close(reason: nil) ⇒ Object
- #handle_channel_command(payload) ⇒ Object
-
#initialize(server, request) ⇒ Base
constructor
A new instance of Base.
- #on_close(reason, code) ⇒ Object
- #on_error(message) ⇒ Object
- #on_message(message) ⇒ Object
- #on_open ⇒ Object
- #process ⇒ Object
- #receive(websocket_message) ⇒ Object
- #reload ⇒ Object
- #transmit(cable_message) ⇒ Object
Constructor Details
#initialize(server, request) ⇒ Base
Returns a new instance of Base.
11 12 13 14 15 16 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 11 def initialize(server, request) @server, @request = server, request @env = request.env @websocket = RailsLiveReload::WebSocket::Wrapper.new(env, self, event_loop) = RailsLiveReload::WebSocket::MessageBuffer.new(self) end |
Instance Attribute Details
#dt ⇒ Object (readonly)
Returns the value of attribute dt.
7 8 9 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 7 def dt @dt end |
#env ⇒ Object (readonly)
Returns the value of attribute env.
6 7 8 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 6 def env @env end |
#files ⇒ Object (readonly)
Returns the value of attribute files.
7 8 9 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 7 def files @files end |
#protocol ⇒ Object (readonly)
Returns the value of attribute protocol.
6 7 8 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 6 def protocol @protocol end |
#request ⇒ Object (readonly)
Returns the value of attribute request.
6 7 8 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 6 def request @request end |
#server ⇒ Object (readonly)
Returns the value of attribute server.
6 7 8 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 6 def server @server end |
Instance Method Details
#beat ⇒ Object
59 60 61 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 59 def beat transmit type: RailsLiveReload::INTERNAL[:message_types][:ping], message: Time.now.to_i end |
#close(reason: nil) ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 51 def close(reason: nil) transmit({ type: RailsLiveReload::INTERNAL[:message_types][:disconnect], reason: reason }) websocket.close end |
#handle_channel_command(payload) ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 32 def handle_channel_command(payload) case payload['event'] when 'setup' setup payload['options'] else raise NotImplementedError end end |
#on_close(reason, code) ⇒ Object
79 80 81 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 79 def on_close(reason, code) server.remove_connection(self) end |
#on_error(message) ⇒ Object
75 76 77 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 75 def on_error() raise end |
#on_message(message) ⇒ Object
71 72 73 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 71 def () .append end |
#on_open ⇒ Object
63 64 65 66 67 68 69 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 63 def on_open @protocol = websocket.protocol .process! server.add_connection(self) end |
#process ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 18 def process if websocket.possible? respond_to_successful_request else respond_to_invalid_request end end |
#receive(websocket_message) ⇒ Object
26 27 28 29 30 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 26 def receive() if websocket.alive? handle_channel_command decode() end end |
#reload ⇒ Object
41 42 43 44 45 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 41 def reload return if dt.nil? || files.nil? || RailsLiveReload::Checker.scan(dt, files).size.zero? transmit({command: "RELOAD"}) end |
#transmit(cable_message) ⇒ Object
47 48 49 |
# File 'lib/rails_live_reload/web_socket/base.rb', line 47 def transmit() websocket.transmit encode() end |