aboutsummaryrefslogtreecommitdiffstats
path: root/lib/action_cable/connection
diff options
context:
space:
mode:
Diffstat (limited to 'lib/action_cable/connection')
-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)