我正在尝试在heroku上为聊天应用程序部署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.log('Server running...');
io.sockets.on('connection',function(socket){
connections.push(socket);
console.log('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.log('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": "*"
}
}
但是我遇到了这个错误
无法获取/
答案 0 :(得分:0)
此错误没有错误地部署了应用程序。您的应用仍在等待端口3000(或process.env.PORT的端口)上的连接。应用程序响应“无法获取/”,因为您没有任何路线。
要了解如何实现路由,请查看此-> https://expressjs.com/en/starter/hello-world.html
要查看如何使用socket.io(客户端部分)进行连接,请查看此-> https://socket.io/get-started/chat/#Integrating-Socket-IO
答案 1 :(得分:0)
有同样的问题(socket.io中有express和react)。
您可以将以下行添加到服务器:
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"