Модуль PocketIO - страдания под windows

23.07.2013г. // Рубрики: web, Рецепты, Perl
BugBugs Outbreak - Käferausbruch
На работе появилась интересная задача, для решения которой намеревались воспользоваться 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 впадает в прострацию и не выходит из неё, пока не разорвать соединение с браузером. В общем, если автор модуля случайно наткнётся на эти строки, то вот..
Ну а на работе выход нашёлся: фронтенд-напарник согласился на убунту. Как выяснилось, железяка с линуксом смогла заработать ничуть не хуже (были подозрения, что тачпад-интерфейс не заживёт, ан нет).

Комментарии

  • vti
    04.10.2013 20:15
    Автор модуля прочитал эти строки :) Похожа ли эта ошибка на https://github.com/vti/protocol-websocket/issues/9? Стоит попробовать еще раз, этот код вроде бы исправлялся.
  • Perlmaster
    08.10.2013 22:52
    Да, что-то подобное.. Прилагаемые примеры чатов тестировались на ActiveState Perl, модуль Protocol::WebSocket успешно устанавливался через ppm, но вот был затык.
    В любом случае, под линуксом задача была успешно решена, награды получены, дело закрыто и уже даже немного подзабыто ))

Рубрики