require "json" module GameServer module Server class Connection def initialize(ws, world) @ws = ws @world = world @router = MessageRouter.new(world) end def run Logging.logger.info "connection opened" while msg = @ws.read data = JSON.parse(msg) response = @router.handle(data) @ws.write(JSON.dump(response)) if response end rescue => e Logging.logger.error e.message ensure Logging.logger.info "connection closed" end end end end