На работе появилась интересная задача, для решения которой намеревались воспользоваться
Perl-реализацией библиотеки socket.io (версия 0.15 на данный момент). Почему Windows - даже не спрашивайте. Поначалу посчитали, что железяка, на которой будет работать приблуда, заточена под эту ось. Короче, начал активно изучать работу с websockets, благо весьма перспективная технология (давно к ней подбирался).
Запустил прилагающиеся примеры (под линуксом), поэкспериментировал с чатами, почитал разные документации, чего-то понял и приступил к реализации под виндой. На этом счастливая часть эпопеи была завершена. Exampl-ы упрямо не хотели работать как надо. Если точнее - handshake не отдавался сервером. Этот bug воспроизводился и в XP, и в Windows 7.
Длительное ползание по коду отладчиком привело к локализации места - в другом модуле, но этого же автора:
Protocol::WebSocket::Message, функция _append
if (ref $_[0]) {
$_[0]->read(my $buf, $self->{max_message_size});
$self->{buffer} .= $buf;
}Здесь read впадает в прострацию и не выходит из неё, пока не разорвать соединение с браузером. В общем, если автор модуля случайно наткнётся на эти строки, то вот..
Ну а на работе выход нашёлся: фронтенд-напарник согласился на убунту. Как выяснилось, железяка с линуксом смогла заработать ничуть не хуже (были подозрения, что тачпад-интерфейс не заживёт, ан нет).