提交 426676e8 编写于 作者: P Pratik Naik

Confirm connection monitor subscription on open

上级 725c913c
...@@ -154,7 +154,7 @@ def cookies ...@@ -154,7 +154,7 @@ def cookies
def handle_open def handle_open
connect if respond_to?(:connect) connect if respond_to?(:connect)
subscribe_to_internal_channel subscribe_to_internal_channel
beat confirm_connection_monitor_subscription
message_buffer.process! message_buffer.process!
server.add_connection(self) server.add_connection(self)
...@@ -173,6 +173,13 @@ def handle_close ...@@ -173,6 +173,13 @@ def handle_close
disconnect if respond_to?(:disconnect) disconnect if respond_to?(:disconnect)
end end
def confirm_connection_monitor_subscription
# Send confirmation message to the internal connection monitor channel.
# This ensures the connection monitor state is reset after a successful
# websocket connection.
transmit ActiveSupport::JSON.encode(identifier: ActionCable::INTERNAL[:identifiers][:ping], type: ActionCable::INTERNAL[:message_types][:confirmation])
end
def allow_request_origin? def allow_request_origin?
return true if server.config.disable_request_forgery_protection return true if server.config.disable_request_forgery_protection
......
...@@ -56,7 +56,7 @@ def send_async(method, *args) ...@@ -56,7 +56,7 @@ def send_async(method, *args)
run_in_eventmachine do run_in_eventmachine do
connection = open_connection connection = open_connection
connection.websocket.expects(:transmit).with(regexp_matches(/\_ping/)) connection.websocket.expects(:transmit).with({ identifier: "_ping", type: "confirm_subscription" }.to_json)
connection.message_buffer.expects(:process!) connection.message_buffer.expects(:process!)
connection.process connection.process
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册