lib/em-midori/server.rb in em-midori-0.0.9.1 vs lib/em-midori/server.rb in em-midori-0.0.9.2
- old
+ new
@@ -1,29 +1,31 @@
module Midori::Server
attr_accessor :request, :api, :websocket, :eventsource
- def initialize(api)
+ def initialize(api, logger)
@api = api
+ @logger = logger
@request = Midori::Request.new
@websocket = Midori::WebSocket.new(self)
@eventsource = Midori::EventSource.new(self)
end
def receive_data(data)
- ->() {async_internal(Fiber.new do
+ ->() { 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
- puts "#{@request.ip} - - [#{Time.now.inspect}] \"#{@request.method} #{@request.path} #{@request.protocol}\" #{@response.status} #{(Time.now.to_f - start_time.to_f).round(5)}".green
- end)}.call
+ 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
end
def receive_new_request(data)
begin
@request.parse(data)
@@ -31,12 +33,12 @@
call_event(:open) if @request.websocket?
rescue Midori::Error::NotFound => _e
@response = Midori::Response.new(404, {}, '404 Not Found')
rescue => e
@response = Midori::Response.new(500, {}, 'Internal Server Error')
- puts e.inspect.red
- puts e.backtrace.join("\n").yellow
+ @logger.error e.inspect.red
+ @logger.warn e.backtrace.join("\n").yellow
end
unless @request.websocket? || @request.eventsource?
send_data @response
close_connection_after_writing
end
@@ -56,15 +58,15 @@
rescue Midori::Error::FrameEnd => _e
call_event(:close)
send_data "\b" # Opcode 0x8
close_connection_after_writing
rescue Midori::Error::PingPongSizeTooLarge => e
- puts e.inspect.yellow
+ @logger.warn e.inspect.yellow
call_event(:error) # Neglect Too large ping request
rescue => e
call_event(:error)
- puts e.inspect.red
- puts e.backtrace.join("\n").yellow
+ @logger.error e.inspect.red
+ @logger.warn e.backtrace.join("\n").yellow
close_connection_after_writing
end
def call_event(event, args = [])
(-> { @websocket.instance_exec(*args, &@websocket.events[event]) }.call) unless @websocket.events[event].nil?