Я пытаюсь развернуть сервер socket io + express на героку для приложения чата, но у меня возникла проблема при развертывании сервера.
Сначала это мой серверный код
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
users = [];
connections = [];
server.listen(process.env.PORT || 3000);
console.info('Server running...');
io.sockets.on('connection',function(socket){
connections.push(socket);
console.info('Connected %s sockets connected ', connections.length);
//Disconnect
socket.on('disconnect', function(data){
users.splice(users.indexOf(socket.username),1);
connections.splice(connections.indexOf(socket),1);
console.info('Disconneted : %s sockets connected',connections.length);
});
});
Это мой файл package.json
{
"name": "",
"version": "1.0.0",
"description": "chat application",
"main": "index.js",
"scripts": {
"start": "node index"
},
"author": "",
"license": "ISC",
"dependencies": {
"socket.io": "*",
"express": "*"
}
}
Но я получаю эту ошибку
Cannot GET /





Эта ошибка не имеет ничего плохого в развернутом приложении. Ваше приложение все еще ожидает подключения к порту 3000 (или к порту из process.env.PORT). Приложение отвечает «Невозможно получить /», потому что у вас нет маршрутов.
Чтобы увидеть, как можно реализовать маршруты, посмотрите здесь -> https://expressjs.com/en/starter/hello-world.html
Чтобы увидеть, как подключиться с помощью socket.io (клиентская часть), посмотрите на это -> https://socket.io/get-started/chat/#Интеграция-Socket-IO
Была такая же проблема (socket.io с экспрессом и реакцией).
Вы можете добавить на сервер эту строку:
app.use(express.static('some path to a static file'));
например
app.use(express.static('client/build'))
у меня работает, предполагая, что в package.json есть эта строка в «скриптах»:
"heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client"