В университете у меня есть проект по созданию и развертыванию (на некоторых бесплатных облачных платформах) серверов TCP и HTTP (Node.js), работающих вместе.
У меня нет проблем с их запуском на локальном компьютере, но когда мне нужно развернуть их на облачной платформе, такой как Heroku, возникает несколько препятствий.
Первое небольшое вступление о проекте.
У меня есть встроенные устройства, которые представляют клиенты TCP. Я мог бы сделать их серверами, но так как они находятся за NAT, нет возможности подключиться к ним в любой момент времени. Поэтому я решил сделать их TCP-клиентами. Эти встроенные клиенты TCP устанавливают соединение TCP с сервером TCP, развернутым на облачной платформе. Затем они могут отправлять и получать информацию с сервера без необходимости иметь статические публичные IP-адреса. Сервер TCP, с другой стороны, должен также иметь возможность обслуживать HTTP-запросы - от пользователей, которые хотят контролировать / контролировать конечные устройства (клиенты TCP (встроенные гаджеты)).
Со временем число этих TCP-клиентов может возрасти.
Итак, некоторые из проблем, с которыми я столкнулся:
Heroku clound поддерживает (в бесплатном режиме) только 5000 часов в месяц. Следовательно, сервер не будет отвечать на запросы во второй половине месяца, так как с клиентами поддерживается постоянное соединение. Сейчас я сосредоточен на Google Clould App Engine
. Я думаю, что это будет доступно постоянно.
Проблема с этими облачными платформами заключается в том, что я не могу запустить два сервера в одном приложении и позволить им прослушивать разные порты (один порт для сервера TCP и один порт для сервера HTTP). Goog App Engine обязывает пользователей запускать свои серверы через порт 8080. Надеюсь, вы уже поняли мою дилемму.
Как заставить сервер TCP и HTTP работать вместе на облачной платформе?