如何在Heroku上部署Socket IO和Express服务器

时间:2019-02-13 19:14:46

标签: node.js heroku socket.io

我正在尝试在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": "*"
 }
 }

但是我遇到了这个错误

  

无法获取/

2 个答案:

答案 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"