У меня есть простое чат-приложение socket.io, которое я загрузил в один из новых стеков Heroku 'cedar' .
Теперь у меня почти есть все работает, но я наткнулся на один камень преткновения. На моем локальном хосте я открываю соединение с сервером сокетов от клиента с помощью:
// lots of HTML omitted
socket = new io.Socket('localhost', {port: 8888});
Но на Heroku я, очевидно, должен заменить эти значения чем-то другим.
Я могу получить порт от объекта процесса на сервере вот так:
port = process.env.PORT || 8888
и передать это представлению.
Но что мне заменить на 'localhost'
?
Правильный способ в соответствии со статьей для heroku:
io.configure(function () {
io.set("transports", ["xhr-polling"]);
io.set("polling duration", 10);
});
socket = new io.Socket();
Это гарантирует, что io.Socket не будет пытаться использовать WebSockets.
Не могли бы вы просто указать свое настоящее имя хоста?