Полдня убил, чтобы обнаружить источник проблемы. После переезда ардуинка перестала коннектится к вебсокету.
Проблема оказалась в том, что некоторые заголовки теперь отдаются с маленькой буквой s в названии. То есть не Sec-WebSocket-Accept, а Sec-Websocket-Accept. Этот вариант конечно же модель для ардуинки не ожидал.
Пришлось залезть в код tornado.websocket и добавить правку.
А именно, ищем tornado.httputil._NormalizedHeaderCache. Добавляем в него строку:
normalized = normalized.replace('Websocket', 'WebSocket')
Получаем что-то типа этого:
class NormalizedHeaderCache(tornado.httputil._NormalizedHeaderCache): def __missing__(self, key): normalized = "-".join([w.capitalize() for w in key.split("-")]) # Fix WebSocket issue normalized = normalized.replace('Websocket', 'WebSocket') self[key] = normalized self.queue.append(key) if len(self.queue) > self.size: old_key = self.queue.popleft() del self[old_key] return normalized
Источник: https://github.com/tornadoweb/tornado/issues/1329