После нескольких дней попыток выяснить, в чем дело, я пришел сюда за помощью.Мое приложение Heroku использует React в качестве внешнего интерфейса и Socket.io в качестве внутреннего.Вот упражнение: Heroku запускает dyno с командой «npm run start», которая установлена на concurrently 'npm run react' 'npm run server'
для запуска как переднего, так и заднего конца.
Но даже если я заставлю это работать (не могу даже объяснитькак), это работает только на моем компьютере.Если я пытаюсь перейти на ту же страницу на моем телефоне, запросы не поступают, и я даже не могу сказать, почему, поскольку нет журнала отладки.
Вот мой файл /src/server/index.js:
const express = require("express");
const app = express();
const server = require("http").Server(app);
const io = module.exports.io = require('socket.io')(server)
const port = process.env.PORT || 80
const socketManager = require('./SocketManager') // All functions there
io.on('connection', socketManager);
// app.use(express.static(__dirname + '/../../build'))
server.listen(port,() => {
console.log("Listening on port", port)
})
Я использую файл конфигурации для динамического изменения URL-адреса сервера.
let server = 'https://hidden-waters-73936.herokuapp.com/socket.io/?EIO=4&transport=websocket'; // 404
// let server = window.location.hostname; // 404, same as above
// let server = 'http://localhost:4001'; // works locally on heroku
// let server = '/'; // 404, not found, AND CONNECTION_REFUSED
// let server = 'https://127.0.0.1:4001'; // CONNECTUIN_REFUSED
// let server = 'http://0.0.0.0:4001'; // Doesn't work at all
module.exports = server;
Я закомментировал строки, которые я пробовал.Последней попыткой было изменение https на ws, как кто-то рекомендовал ранее, затем я попытался добавить .com:80/socket.io...
, но все равно не повезло.Каждый раз, когда возникает другая ошибка
Вот как выглядят ошибки с незакомментированной серверной переменной: https://imgur.com/Lf0BxV3
Я ожидаю, что она сделает успешные запросы как на моем компьютере, так и на телефоне.Я попробую свой ноутбук, чтобы просмотреть журналы и проверю, не найду ли я что-нибудь полезное.
** ОБНОВЛЕНИЕ для @ Ashish
React component
import server from '../../config/serverConfig'
const socket = socketIOClient(server);
componentDidMount() {
socket.emit("test", {});
}
** РЕДАКТИРОВАТЬ: Кажется, что мои журналы Heroku говоряту меня что-то еще происходит:
2019-05-13T16:59:55.472135+00:00 app[web.1]: [1] [33m[nodemon] 1.19.0[39m
2019-05-13T16:59:55.474073+00:00 app[web.1]: [1] [33m[nodemon] to restart at any time, enter `rs`[39m
2019-05-13T16:59:55.475362+00:00 app[web.1]: [1] [33m[nodemon] watching: *.*[39m
2019-05-13T16:59:55.477060+00:00 app[web.1]: [1] [32m[nodemon] starting `node src/server/index.js`[39m
2019-05-13T16:59:56.164302+00:00 app[web.1]: [1] Listening on port 40497
2019-05-13T16:59:56.573081+00:00 heroku[web.1]: State changed from starting to up
2019-05-13T16:59:57.538639+00:00 app[web.1]: [0] Something is already running on port 40497.
2019-05-13T16:59:57.585807+00:00 app[web.1]: [0] npm run react exited with code 0
2019-05-13T17:01:19.780332+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/" host=hidden-waters-73936.herokuapp.com request_id=42a6c345-94b7-441a-afde-82c1e9c52e97 fwd="90.191.14.93" dyno=web.1 connect=1ms service=30004ms status=503 bytes=0 protocol=https