У меня Socket.IO настроен с помощью node.js, и он работает на моей локальной машине разработки, слушая/подключаясь к порту 8000 (или другому порту, который не является портом моего сервера работает).Socket.IO с Node.js на Heroku
Когда я пытаюсь сделать то же самое на героку, мой импорт сценария на стороне клиента завершается с ошибкой.
Я попытался относительный путь
<script src="/socket.io/socket.io.js"></script>
Я также попытался выполнить привязку к порту 8000 на Heroku и использовать полный путь к файлу
<script type="text/javascript">
var href = document.location.protocol + document.location.hostname + ':8000/socket.io/socket.io.js';
console.log("href = " + href);
document.write("<script src=" + href + "><\/script>");
</script>
Я читал, что WebSockets не работают на Heroku , поэтому у меня есть следующий код в моем файле after_start.js на сервере. Нужно ли мне что-то делать в дополнение к настройке socket.io для использования транспортов/опросов?
var port = process.env.PORT || 8000; //I've tried hardcoding to 8000 and using process.env.PORT and then I used the relative path for the script import
io = require('socket.io').listen(port);
//Configue io to work with heroku
io.configure(function() {
io.set("transports", ["xhr-polling"]);
io.set("polling duration", 10);
});
Я получаю эту ошибку, когда я загрузить мой Heroku приложение:
GET http://<myAppName>.herokuapp.com/socket.io/socket.io.js 404 (Not Found)
Edit: Я на самом деле с помощью Geddy MVC Framework и хотел бы получить эту работу, как она у меня настроить (в основном только как socket.io) на heroku, и я нашел этот ответ, который, похоже, я могу использовать его аналогичным образом: GeddyJS & socket.io: catching and emitting events from server side
Вам нужно сделать socket.io прослушивание на вашем главном экземпляре 'server' (тот, который используется с Express) – SLaks
вы запускаете HTTP-сервер тоже, как экспресс, или просто socket.io? –
обновленный оригинальный пост. Я использую Гедди. –