На каком IP-адресе разместить http-сервер? (Героку, никаких рамок)

#java #http #heroku #ip

#Ява #http #героку #ip

Вопрос:

На каком IP-адресе я могу разместить свой http-сервер (чистая java) на heroku? Подойдет ли IP-адрес приложения, которое Heroku предоставляет для веб-приложений? Если да, то при необходимости помогите мне настроить Procfile.

Мой Файл Процесса: worker: java -jar (name of jar file).jar

Мой код 1-го класса:

 package discord.wosaj;  import com.sun.net.httpserver.HttpServer;  import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.InetSocketAddress; import java.net.URLDecoder; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.regex.Pattern;  import static java.util.stream.Collectors.*;  public class Main {  public static void main(String[] args) throws IOException {  HttpServer server = HttpServer.create(new InetSocketAddress("https://rests-server.herokuapp.com", 80), 0);  server.createContext("/api/hello", httpExchange -gt; {  if(httpExchange.getRequestMethod().equals("GET")) {  String out = "lt;headgt;lt;meta charset="UTF-8"gt;lt;/headgt;n"    "lt;h1gt;Params:lt;/h1gt;"    Main.splitQuery(httpExchange.getRequestURI().getRawQuery());  httpExchange.sendResponseHeaders(200, out.getBytes().length);  OutputStream stream = httpExchange.getResponseBody();  stream.write(out.getBytes());  stream.flush();  stream.close();  } else {  httpExchange.sendResponseHeaders(405, -1);  }  });  server.setExecutor(null);  server.start();  }   public static Maplt;String, Listlt;Stringgt;gt; splitQuery(String query) {  if (query == null || "".equals(query)) {  return Collections.emptyMap();  }   return Pattern.compile("amp;").splitAsStream(query)  .map(s -gt; Arrays.copyOf(s.split("="), 2))  .collect(groupingBy(s -gt; decode(s[0]), mapping(s -gt; decode(s[1]), toList())));  }   private static String decode(final String encoded) {  try {  return encoded == null ? null : URLDecoder.decode(encoded, "UTF-8");  } catch (final UnsupportedEncodingException e) {  throw new RuntimeException("UTF-8 is a required encoding", e);  }  } }  

Я попробовал 0.0.0.0, он запускается, но непонятно, на какой адрес делать запросы

порт определяется переменной среды «ПОРТ».

Комментарии:

1. Я не понимаю. Каким образом, по вашему мнению, IP-адрес может быть неподходящим?

2. он может быть динамическим, поэтому его можно использовать с вышеупомянутым procfile, или он предназначен только для веб-приложений?

3. Да, IP-адреса Heroku являются динамическими. Но это верно для многих провайдеров веб — хостинга. Это не мешает вам их использовать. Вам просто нужно правильно настроить DNS. Heroku используется для множества веб-приложений. Это в основном все, что он делает.

4. … Мне не нужно привязывать домен, мне нужно открыть HTTPServer и указать в нем IP-адрес, dynamic не принимает

5. Пожалуйста, покажите код, где вы это делаете. Я подозреваю, что вы путаетесь между прослушиванием соединений и общедоступным IP-адресом вашего dyno.

Ответ №1:

Решение найдено, но я все равно напишу: установите ip на 0.0.0.0, а порт на переменную среды PORT, установите ее как web в файле procfile, она должна работать