Я следил за этим очень простым руководством по настройке конечной точки WebSocket на Java: http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/HomeWebsocket/WebsocketHome.html
Однако Heroku ожидает, что я буду полагаться на Play Framework: https://devcenter.heroku.com/articles/play-java-websockets
У меня вопрос: как я могу развернуть то же самое без каких-либо дополнительных фреймворков и какую процедуру мне нужно пройти, чтобы все заработало?




Heroku не требует, чтобы платформа Play использовала Websockets. Это всего лишь пример. Пока ваше приложение из учебника Oracle связывается с $PORT, оно должно работать.
Не могли бы вы предоставить ссылку на ресурс, описывающий процесс привязки к 0.0.0.0? Я просто не могу найти ничего подходящего по этой теме.
Я назначил награду. Вам может быть интересно.
Можете ли вы запустить пример Oracle из командной строки (то есть не в IDE)?
Я понятия не имею, как это сделать.
У вас есть файл WAR, созданный IDE?
Да, файл WAR существует, и я знаю, в какой папке он находится.
Попробуйте развернуть его на heroku с помощью heroku plugins:install heroku-cli-deploy, а затем heroku deploy:war yourapp.war
Позвольте нам продолжить обсуждение в чате.
У вас была такая проблема:
Учебное пособие, которому вы следовали, было создано для сервера приложений GlassFish, но Heroku поддерживает только Tomcat 8 и Jetty. Смотрите здесь: https://devcenter.heroku.com/articles/war-deployment
Но не волнуйтесь, я портировал и протестировал руководство для работы с Tomcat 8.
Я также добавил стеклянную реализацию спецификации javax.json. (Убедитесь, что вы загрузили реализацию, а не только интерфейсы спецификации) Вы можете найти его здесь: http://central.maven.org/maven2/org/glassfish/javax.json/1.0.4/
Я также заметил, почему, возможно, ваш index.html не работает локально: я думаю, это потому, что URL-адрес WebSocket был жестко закодирован в файле websocket.js. Я взял на себя смелость исправить это, сделав его динамическим.
Вот полный проект NetBeans 8.0.2:
http://ray.hulha.net/WebsocketHome.zip
Вот лучший способ создать файл войны из NetBeans 7 или 8: 
Однако есть одна загвоздка: в Tomcat 8 на Heroku отсутствует надстройка websocket.
Но не беспокойтесь, вы можете добавить его вручную в файл войны. Вот шаги:
Загрузите надстройку Tomcat websocket здесь:
http://central.maven.org/maven2/org/apache/tomcat/embed/tomcat-embed-websocket/8.0.29/tomcat-embed-websocket-8.0.29.jar
Военный файл на самом деле представляет собой просто zip-архив. Поэтому я использовал 7-молния, чтобы открыть файл войны. Затем перейдите в папку WEB-INF / lib внутри файла war.
Скопируйте банку в войну. Перетащите tomcat-embed-websocket-8.0.29.jar в папку lib файла war внутри 7-Zip.
Z-Zip спросит, действительно ли вы хотите скопировать jar в файл war. Скажи да.
Вот скомпилированный файл войны с tomcat-embed-websocket-8.0.29.jar, готовый к развертыванию на Heroku: http://ray.hulha.net/WebsocketHome.war
Я использовал эту команду для его развертывания:
heroku war:deploy WebsocketHome.war --app websockethome
Обязательно замените имя приложения в конце на имя вашего приложения.
И вот рабочий результат: http://websockethome.herokuapp.com/
Также кажется, что бегун веб-приложений на Heroku не поддерживает веб-сокеты. Посмотрите, как это работает: stackoverflow.com/questions/43170817/…
Не получилось как положено. Я попытался собрать ваш проект и развернуть полученную WAR на Heroku. Затем я развернул файл WAR ваш. Ни один из двоих не справился со своей задачей.
Все заработало! Вам нужно скопировать tomcat-embed-websocket-8.0.29.jar в файл war. Военный файл - это просто zip-архив. Я использовал 7-ZIP. Внутри файла WAR вы должны зайти в папку WEB-INF / lib. Скопируйте банку в эту папку. Я загрузил tomcat-embed-websocket-8.0.29.jar отсюда: central.maven.org/maven2/org/apache/tomcat/embed/… Я также обновил военный файл на своем сервере. Вот рабочая демонстрация: websockethome.herokuapp.com/#
К своему ответу я добавил подробные инструкции по всему.
Спасибо за уделенное время, Рэй! Я проверю / проверю ваш ответ завтра.
Мы приближаемся, но, увы, когда я перестраиваю и повторно развертываю свою версию (с tomcat-emded-websocket-8.0.29 в WEB-INF \ lib), Heroku показывает мне свою страницу «Ошибка приложения», если я пытаюсь получить доступ к ее (фиктивный) index.html. Другими словами, развертывание работает, все остальное - нет.
Ты в скайпе ?
Я. Когда вы доступны?
На моем компьютере нет микрофона.
Раймонд, не забудьте упомянуть, что нужно добавить JAR-библиотеку JSON.
Взглянув на stackoverflow.com/questions/36751071/…, мне кажется, что мне также нужно привязать хост к 0.0.0.0. Это верно?