Sha256: 96624c0d838dc8297aa1a0abdb18412d84c1a21354bcda16a367ba9cb552670a
Contents?: true
Size: 1.32 KB
Versions: 2
Compression:
Stored size: 1.32 KB
Contents
module ActionCable module Connection #-- # This class is heavily based on faye-websocket-ruby # # Copyright (c) 2010-2015 James Coglan class Stream def initialize(event_loop, socket) @event_loop = event_loop @socket_object = socket @stream_send = socket.env['stream.send'] @rack_hijack_io = nil hijack_rack_socket end def each(&callback) @stream_send ||= callback end def close shutdown @socket_object.client_gone end def shutdown clean_rack_hijack end def write(data) return @rack_hijack_io.write(data) if @rack_hijack_io return @stream_send.call(data) if @stream_send rescue EOFError @socket_object.client_gone end def receive(data) @socket_object.parse(data) end private def hijack_rack_socket return unless @socket_object.env['rack.hijack'] @socket_object.env['rack.hijack'].call @rack_hijack_io = @socket_object.env['rack.hijack_io'] @event_loop.attach(@rack_hijack_io, self) end def clean_rack_hijack return unless @rack_hijack_io @event_loop.detach(@rack_hijack_io, self) @rack_hijack_io = nil end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
actioncable-5.0.0.beta3 | lib/action_cable/connection/stream.rb |
actioncable-5.0.0.beta2 | lib/action_cable/connection/stream.rb |