Ruby: Как обслуживать статический HTML и сервер EventMachine WebSocket из одного приложения?
Я пишу простое приложение для чата. Единственный требуемый "внешний интерфейс" - это один HTML-файл, файл JavaScript и несколько таблиц стилей. Большая часть приложения - серверный сервер EventMachine WebSocket.
Я также пытаюсь разместить это на Heroku.
В настоящее время у меня есть приложение sinatra, которое просто обслуживает статические файлы, и отдельное приложение, которое обслуживает сервер WebSocket (на другом порту).
Есть ли способ объединить их, чтобы я мог запустить одно приложение, которое обслуживает / отвечает на порт 80 (для статических файлов) и другой порт для сервера WebSocket?
2 ответа
Вероятно, не стоит запускать сервер WebSocket на другом порту. WebSockets работают на порте 80 именно потому, что этот порт не блокируется в большинстве сетей. Если вы используете другой порт, вы обнаружите, что пользователи за некоторыми брандмауэрами не могут использовать ваше приложение.
Запуск вашего сервера событий отдельно от вашего веб-сервера, вероятно, лучший способ.
Если вы хотите что-то более экспериментальное, Goliath имеет поддержку WebSocket в основной ветке и может также обслуживать необходимые ресурсы. Если вы посмотрите в каталог примеров, то есть сервер WebSocket, который также обслуживает его HTML-страницу.