под данные о текущих боях (расположение кораблей, ходы) сделал просто глобальный объект с массивами
Я бы так не делал. Во первых, по хорошему, на каждый бой должен запускаться отдельный процесс. Чтобы процесс боя падая не убивал с собой весь стек сервисов. Хранить данные можно в памяти, можно файлом на разделе tmpfs.
Не забывайте, важно не допускать race conditions.
Если у вас используется express/connect, сведите к минимуму обращения middleware к глобальным объектам, и ни в коем случае
не сохраняйте ничего в глобальных из middleware. Есть объекты для общих данных, например,
app.locals
,
res.locals
; есть много реализаций сессий.
Позже заметил
matrix[i] = Array('','','','','','','','','','');
наверное, правильнее так
matrix[i] = ['','','','','','','','','',''];
Да и еще один тонкий момент. Здесь по коду у вас этого нет, но про это вам никто не скажет. Но вы обязательно посчитаете должным так делать. Во избежание утечек не изменяйте структуру объектов после их создания. Вся структура, прототип, все параметры объектов должны определяться до создания и в конструкторе.