В настоящее время нет способа направить не-HTTP-трафик в ваше приложение. Heroku связывает веб-серверы Ruby с различными портами и хостами за кулисами, а затем направляет трафик к этим процессам на основе хоста в заголовке HTTP. Предполагается, что запросы продолжительностью более 30 секунд зависают и прекращаются.
С точки зрения дизайна, длительные запросы представляют значительную проблему производительности. При использовании одной динамограммы любой запрос, который длится 30 секунд (или даже 2 секунды), не позволяет любому другому пользователю получить доступ к вашему сайту на весь период. Вместо этого, более производительный дизайн состоит в том, чтобы быстро обслуживать страницу в базовом состоянии и использовать рабочий поток для обработки содержимого в фоновом режиме, извлекая результаты через javascript. Это можно сделать просто с помощью современных инструментов веб-разработки.
Если у вас есть длительный процесс, с которым вам не нужно взаимодействовать через сокет, вы можете просто использовать рабочий. Я бы порекомендовал такой инструмент, как MongoDB для хранения результатов вычислений, и такую библиотеку, как Delayed :: Job для организации очередей.
Сказав все это, есть определенно разумные варианты использования, которые требуют более длительных процессов и трафика не-HTTP, но в настоящий момент Heroku их не поддерживает.