【发布时间】:2018-06-15 08:26:39
【问题描述】:
我只懂一点node js。我正在为网络游戏制作服务器。监听 network.js(功能服务器)中的代码。但是在 Heroku 中,它需要在 index.js 上监听,否则应用程序会崩溃……我已经在谷歌中搜索了如何解决这个问题,但我没有得到它
请帮帮我:)
index.js
var express = require('express');
var app = express();
app.set('port', (process.env.PORT || 5000));
app.use(express.static(__dirname + '/'));
app.listen(app.get('port'), function() {
console.log('Node app is running on port', app.get('port'));
});
var WORLD_SX = 128;
var WORLD_SY = 128;
var WORLD_SZ = 32;
var WORLD_GROUNDHEIGHT = 16;
var SECONDS_BETWEEN_SAVES = 60;
var ADMIN_IP = "127.0.0.1";
// Load modules
var modules = {};
modules.helpers = require( "./js/helpers.js" );
modules.blocks = require( "./js/blocks.js" );
modules.world = require( "./js/world.js" );
modules.network = require( "./js/network.js" );
modules.io = require( "socket.io" );
modules.fs = require( "fs" );
var log = require( "util" ).log;
// Set-up evil globals
global.Vector = modules.helpers.Vector;
global.BLOCK = modules.blocks.BLOCK;
// Create new empty world or load one from file
var world = new modules.world.World( WORLD_SX, WORLD_SY, WORLD_SZ );
network.js
...
function Server( socketio, slots )
{
var express = require('express');
var app = express();
var http = require('http').Server(app);
app.use(express.static('.'));
var io = this.io = socketio(http);
var s = this;
io.sockets.on( "connection", function( socket ) { s.onConnection( socket ); } );
this.eventHandlers = {};
this.activeNicknames = {};
this.activeAddresses = {};
this.maxSlots = slots;
this.usedSlots = 0;
this.oneUserPerIp = true;
http.listen(5000, function() {});
}
【问题讨论】:
-
你不能让两个进程监听同一个端口。您要么需要将它们放在不同的端口号上,将它们组合成一个应用程序,要么在它们前面运行一些东西来路由流量。
-
好吧,如果我只想在 1 个端口中制作它,怎么做?任何解决方案
-
如果你想让你的应用程序从一个端口可用,你要么必须按照 Arkerone 的建议将它们的代码合并在一起,要么在 5001 和 5002 上运行它们,并在 5000 上使用代理交通。没有办法解决这个问题 - 一个端口只能有一个侦听器。
标签: javascript node.js express heroku socket.io