diff options
Diffstat (limited to 'actioncable/lib/action_cable/connection/web_socket.rb')
-rw-r--r-- | actioncable/lib/action_cable/connection/web_socket.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/actioncable/lib/action_cable/connection/web_socket.rb b/actioncable/lib/action_cable/connection/web_socket.rb new file mode 100644 index 0000000000..11f28c37e8 --- /dev/null +++ b/actioncable/lib/action_cable/connection/web_socket.rb @@ -0,0 +1,39 @@ +require 'websocket/driver' + +module ActionCable + module Connection + # Wrap the real socket to minimize the externally-presented API + class WebSocket + def initialize(env, event_target, event_loop, client_socket_class, protocols: ActionCable::INTERNAL[:protocols]) + @websocket = ::WebSocket::Driver.websocket?(env) ? client_socket_class.new(env, event_target, event_loop, protocols) : nil + end + + def possible? + websocket + end + + def alive? + websocket && websocket.alive? + end + + def transmit(data) + websocket.transmit data + end + + def close + websocket.close + end + + def protocol + websocket.protocol + end + + def rack_response + websocket.rack_response + end + + protected + attr_reader :websocket + end + end +end |