Проблема с веб-сокетом YAWS

Я пытаюсь получить пример веб-сокета YAWS из здесь работает на моем локальном компьютере. Это базовый эхо-сервер на основе ws.

у меня есть

  • YAWS настроен и работает на localhost:8080 (прямо из репозиториев Debian; никаких изменений в конфигурации, кроме указания на новый корневой каталог)
  • листинг кода из нижней части этой страницы, завернутый в <erl> теги, сохраненные как websockets_example_endpoint.yaws
  • эта страница сохранена как index.yaws (я буквально скопировал/вставил для нее исходный код, сохранил его как этот файл и указал запрос сокета на localhost:8080, а не yaws.hyber.org).

Когда я посещаю localhost:8080/websockets_example_endpoint.yaws в браузере, он отображает текст «Вы не клиент веб-сокетов! Уходите!», Как и ожидалось. Когда я посещаю localhost:8080, он указывает мне на форму с включенным javascript, но кнопка «Подключиться» ничего не делает при нажатии. Если я оставлю index.yaws указывающим на yaws.hyber.org вместо localhost:8080, эхо-сервер подключится и будет работать точно так, как ожидалось.

Может ли кто-нибудь подсказать, что я делаю неправильно (или, в качестве альтернативы, указать мне источник для рабочего примера)?


person Inaimathi    schedule 22.10.2011    source источник


Ответы (2)


Я создал проект gitbub:
https://github.com/f3r3nc/yaws-web-chat/

Это также пример встраивания рысканий и расширенного группового чата.

Обратите внимание, что стандарт WebSocket находится в стадии разработки, поэтому для правильной работы браузер должен поддерживать ту же версию WS.

yaws 1.91 работает с Safari версии 5.1.1 (6534.51.22), но не с Chrome (15.0.874.102) и, вероятно, не с (14.x).

person f3r3nc    schedule 26.10.2011
comment
c создание файлов, а затем запуск ybed_sup:start_link(). дает мне =ERROR REPORT==== 28-Oct-2011::13:55:52 === Error in process <0.52.0> with exit value: {undef,[{yaws_api,embedded_start_conf,["/tmp/yawstest",[{port,7000},{listen,{0,0,0,0}},{docroot,"/tmp/yawstest"},{appmods,[{"/",hello}]}],[{id,"embedded"}],"embedded"]},{ybed,run,0}]} (я сделал одно изменение, и это должно было указать yaws_api include на фактический файл yaws_api.hrl в моей системе) - person Inaimathi; 28.10.2011

Для меня проблема заключалась в том, что у меня не было файла модуля basic_echo_callback, потому что я установил yaws, используя репозиторий пакетов, а не собирая исходный код формы.

Ошибка была очевидна, если запускать рыскания в интерактивном режиме «yaws -i»:

=ERROR REPORT==== 7-Dec-2016::21:33:49 ===
Cannot load callback module 'basic_echo_callback': nofile
=ERROR REPORT==== 7-Dec-2016::21:33:49 ===
Failed to start websocket process: nofileq

Это в значительной степени мой процесс с нуля на Ubuntu 16.01:

sudo apt install yaws
cd ~
mkdir yaws
cd yaws

mkdir src
cd src
cd src wget https://github.com/klacke/yaws/raw/master/examples/src/basic_echo_callback.erl
cd ..

mkdir www
cd www
wget https://raw.githubusercontent.com/klacke/yaws/master/www/websockets_example_endpoint.yaws
wget http://yaws.hyber.org/websockets_example.yaws
cd ..

#set-up server config file...
vim yaws.conf

Мой выглядит так:

src_dir = /home/pocketsand/yaws/src
<server localhost>
  port = 8000
  listen = 127.0.0.1
  docroot = /home/pocketsand/yaws/www
</server>

Убедитесь, что конечная точка указана правильно в клиенте:

vim www/websockets_example.yaws
...

Остановите сервер, если он уже запущен, и запустите сервер с помощью «yaws -i» и перейдите по адресу: http://localhost:8000/websockets_example.yaws

Это работает, потому что каждый раз, когда сервер загружает файл конфигурации, он будет компилировать любые модули в указанном каталоге src. Если другие модули отсутствуют для других функций, их также необходимо загрузить.

person Pocketsand    schedule 07.12.2016