lib/em-midori/server.rb in em-midori-0.0.9.3 vs lib/em-midori/server.rb in em-midori-0.0.9.4

- old
+ new

@@ -18,24 +18,25 @@ end # Logics of receiving data # @param [String] data raw data def receive_data(data) - ->() { async_internal(Fiber.new do - start_time = Time.now - data = StringIO.new(data) - port, ip = Socket.unpack_sockaddr_in(get_peername) - @request.ip = ip - @request.port = port - if @request.parsed? - websocket_request(data) - else - receive_new_request(data) - end - now_time = Time.now - @logger.info "#{@request.ip} - - \"#{@request.method} #{@request.path} #{@request.protocol}\" #{@response.status} #{(now_time.to_f - start_time.to_f).round(5)}".green - end) }.call + lambda do + async_internal(Fiber.new do + start_time = Time.now + port, ip = Socket.unpack_sockaddr_in(get_peername) + @request.ip = ip + @request.port = port + if @request.parsed? + websocket_request(StringIO.new(data)) + else + receive_new_request(data) + end + now_time = Time.now + @logger.info "#{@request.ip} - - \"#{@request.method} #{@request.path}\" #{@response.status} #{(now_time.to_f - start_time.to_f).round(6)}".green + end) + end.call end # Logics of receiving new request # @param [String] data raw data def receive_new_request(data) @@ -55,21 +56,21 @@ close_connection_after_writing end end # Logics of receiving WebSocket request - # @param [String] data raw data + # @param [StringIO] data raw data def websocket_request(data) @websocket.decode(data) case @websocket.opcode - when 0x1, 0x2 - call_event(:message, [@websocket.msg]) - when 0x9 - @websocket.pong(@websocket.msg) - call_event(:ping) - when 0xA - call_event(:pong) + when 0x1, 0x2 + call_event(:message, [@websocket.msg]) + when 0x9 + @websocket.pong(@websocket.msg) + call_event(:ping) + when 0xA + call_event(:pong) end rescue Midori::Error::FrameEnd => _e call_event(:close) send_data "\b" # Opcode 0x8 close_connection_after_writing @@ -85,8 +86,8 @@ # To call a websocket event if it exist # @param [Symbol] event event name # @param [Array] args arg list def call_event(event, args = []) - (-> { @websocket.instance_exec(*args, &@websocket.events[event]) }.call) unless @websocket.events[event].nil? + -> { @websocket.instance_exec(*args, &@websocket.events[event]) }.call unless @websocket.events[event].nil? end end