aboutsummaryrefslogtreecommitdiffstats
path: root/lib/action_cable/connection/base.rb
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2015-04-09 18:50:22 -0500
committerPratik Naik <pratiknaik@gmail.com>2015-04-09 18:50:22 -0500
commit033de15758bfb57a43e5e903fc4a1f6fa9fac118 (patch)
treec5b343cac076657b029724e338ee6a245845da0c /lib/action_cable/connection/base.rb
parent005a99ebf687051df12af96e83b677e4abda9b21 (diff)
downloadrails-033de15758bfb57a43e5e903fc4a1f6fa9fac118.tar.gz
rails-033de15758bfb57a43e5e903fc4a1f6fa9fac118.tar.bz2
rails-033de15758bfb57a43e5e903fc4a1f6fa9fac118.zip
Collect information about all the open connections and a method to fetch that
Diffstat (limited to 'lib/action_cable/connection/base.rb')
-rw-r--r--lib/action_cable/connection/base.rb17
1 files changed, 15 insertions, 2 deletions
diff --git a/lib/action_cable/connection/base.rb b/lib/action_cable/connection/base.rb
index 0c20f11502..655e74ee01 100644
--- a/lib/action_cable/connection/base.rb
+++ b/lib/action_cable/connection/base.rb
@@ -16,18 +16,19 @@ module ActionCable
delegate :worker_pool, :pubsub, :logger, to: :server
def initialize(server, env)
+ @started_at = Time.now
+
@server = server
@env = env
@accept_messages = false
@pending_messages = []
+ @subscriptions = {}
end
def process
logger.info "[ActionCable] #{started_request_message}"
if websocket?
- @subscriptions = {}
-
@websocket = Faye::WebSocket.new(@env)
@websocket.on(:open) do |event|
@@ -93,8 +94,18 @@ module ActionCable
@websocket.close
end
+ def statistics
+ {
+ identifier: connection_identifier,
+ started_at: @started_at,
+ subscriptions: @subscriptions.keys
+ }
+ end
+
private
def initialize_connection
+ server.add_connection(self)
+
connect if respond_to?(:connect)
subscribe_to_internal_channel
@@ -103,6 +114,8 @@ module ActionCable
end
def on_connection_closed
+ server.remove_connection(self)
+
cleanup_subscriptions
unsubscribe_from_internal_channel
disconnect if respond_to?(:disconnect)