Вот как моя компания решает эти проблемы:
1) если вы можете установить соединение без немедленного получения сообщения об ошибке, вы должны предположить, что соединение было установлено. Если вы не получили немедленный ответ (плохой или нет), вам просто нужно предположить, что он работает ... это требует некоторой жесткой поддержки со стороны клиента, поэтому важно разумно использовать идентификаторы последовательности.
2) Просто попробуйте еще раз прямо сейчас. Обычно сервер истекает до того, как это делает клиент, и отправляет код ошибки, сообщающий вам, что произошло. Просто убедитесь, что вы используете что-то разумное, например, 20 секунд для вашего опроса на стороне сервера.
3) Вы должны использовать другое доменное имя, отличное от других запросов, к компьютеру той же службы и использовать jsonp. Например, если ваша страница размещается с сайта example.com, обычно существует поддомен chat.example.com, поскольку большинство браузеров допускают только 3 или 4 открытых соединения одновременно с одним и тем же доменным именем. Jsonp необходим из-за той же политики происхождения. Помимо этого: тест, тест, тест.
Райан Даль (создатель node.js) имеет очень простой чат-клиент / сервер, реализованный здесь: https://github.com/ry/node_chat
Удачи !!