[] == "0" — слева объект, справа строка. Объект приводится к примитиву, в случае с массивом это будет [].toString(), что вернёт пустую строку в результате "" == "0" => false
[] == 0 — массив опять приводится к пустой строке, получаем сравнение "" == 0, слева строка, справа число => строка приводится к числу. Пустая строка приводится к 0, получаем 0 == 0 => true
Что-то мне кажется, что вам придётся написать свой сервер который будет раздавать задания разным бекендам. С точки зрения nginx — web-socket это одно соединение и внутрь него он не умеет заглядывать.