【问题标题】:heroku node js listen in same portheroku node js在同一个端口监听
【发布时间】: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


【解决方案1】:

您必须在文件 index.js 或文件 network.js 中更改端口 5000。不可能有两个应用在同一个端口上监听。

【讨论】:

  • 好吧,如果我只想在 1 个端口中制作它,怎么做?任何解决方案
猜你喜欢
  • 1970-01-01
  • 2018-06-22
  • 2019-06-05
  • 1970-01-01
  • 2013-06-17
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多