Module: AnyCable::RackServer
- Defined in:
- lib/anycable/rack-server/connection.rb,
lib/anycable/rack-server.rb,
lib/anycable/rack-server/hub.rb,
lib/anycable/rack-server/errors.rb,
lib/anycable/rack-server/pinger.rb,
lib/anycable/rack-server/socket.rb,
lib/anycable/rack-server/logging.rb,
lib/anycable/rack-server/version.rb,
lib/anycable/rack-server/middleware.rb,
lib/anycable/rack-server/rpc/client.rb,
lib/anycable/rack-server/coders/json.rb,
lib/anycable/rack-server/broadcast_subscribers/redis_subscriber.rb
Overview
rubocop:disable Metrics/LineLength
Defined Under Namespace
Modules: BroadcastSubscribers, Coders, Errors, Logging, RPC Classes: Connection, Hub, Middleware, Pinger, Socket
Constant Summary collapse
- DEFAULT_OPTIONS =
{ headers: ['cookie', 'x-api-token'] }.freeze
- VERSION =
'0.0.1'
Class Attribute Summary collapse
-
.broadcast_subscriber ⇒ Object
readonly
Returns the value of attribute broadcast_subscriber.
-
.coder ⇒ Object
readonly
Returns the value of attribute coder.
-
.hub ⇒ Object
readonly
Returns the value of attribute hub.
-
.middleware ⇒ Object
readonly
Returns the value of attribute middleware.
-
.pinger ⇒ Object
readonly
Returns the value of attribute pinger.
-
.server_id ⇒ Object
readonly
Returns the value of attribute server_id.
Class Method Summary collapse
Class Attribute Details
.broadcast_subscriber ⇒ Object (readonly)
Returns the value of attribute broadcast_subscriber.
22 23 24 |
# File 'lib/anycable/rack-server.rb', line 22 def broadcast_subscriber @broadcast_subscriber end |
.coder ⇒ Object (readonly)
Returns the value of attribute coder.
22 23 24 |
# File 'lib/anycable/rack-server.rb', line 22 def coder @coder end |
.hub ⇒ Object (readonly)
Returns the value of attribute hub.
22 23 24 |
# File 'lib/anycable/rack-server.rb', line 22 def hub @hub end |
.middleware ⇒ Object (readonly)
Returns the value of attribute middleware.
22 23 24 |
# File 'lib/anycable/rack-server.rb', line 22 def middleware @middleware end |
.pinger ⇒ Object (readonly)
Returns the value of attribute pinger.
22 23 24 |
# File 'lib/anycable/rack-server.rb', line 22 def pinger @pinger end |
.server_id ⇒ Object (readonly)
Returns the value of attribute server_id.
22 23 24 |
# File 'lib/anycable/rack-server.rb', line 22 def server_id @server_id end |
Class Method Details
.start(options = {}) ⇒ Object
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/anycable/rack-server.rb', line 29 def start( = {}) = DEFAULT_OPTIONS.merge() @hub = Hub.new @pinger = Pinger.new @coder = Coders::JSON rpc_host = unpack_host(AnyCable.config.rpc_host) headers = parse_env_headers || [:headers] @server_id = "anycable-rack-server-#{SecureRandom.hex}" @middleware = Middleware.new( nil, pinger: pinger, hub: hub, coder: coder, rpc_host: rpc_host, headers: headers, server_id: server_id ) broadcast_subscribe @_started = true end |
.started? ⇒ Boolean
54 55 56 |
# File 'lib/anycable/rack-server.rb', line 54 def started? @_started == true end |
.stop ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/anycable/rack-server.rb', line 58 def stop return unless started? @_started = false broadcast_subscriber.unsubscribe(@_redis_channel) pinger.stop hub.sockets.each do |socket| hub.remove_socket(socket) socket.close end end |