在Heroku上部署Node.js TCP服务器

3

我已经使用node.js创建了一个TCP服务器,用于接收来自客户端(使用TCP Client android应用进行测试)的消息。是否可能在Heroku上部署这个服务器?这是代码:

var http = require('http')
var express = require('express')
var app = module.exports = express.createServer();
var net = require('net')
var port = process.env.PORT || 5000
var routes = require('./routes')

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.set('view options', {layout:false, pretty:true});
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
});

app.configure('production', function(){
  app.use(express.errorHandler()); 
});

//ROUTES

app.get('/',routes.index);

var mainserver = net.createServer(function(socket) {
    console.log('connected');
    socket.on('data',function(data){
    console.log(data.toString());
    io.sockets.emit('dummy',data.toString());
    });

    });

mainserver.listen(1337, '192.168.1.108');

var io = require('socket.io').listen(app);
app.listen(port);

正如你所看到的,我将TCP消息发送到端口1337和由路由器分配的IP地址。
当我在浏览器中输入localhost:5000时,会得到一个HTML页面,它仅记录服务器从应用程序接收到的消息(稍后使用socket.io将其发送到客户端)。
这里使用了两个端口。
如果要在Heroku上部署,如何替换端口号?还有如何替换IP地址?
感谢任何帮助。
1个回答

0

我认为它不能直接在Heroku上运行。唯一向外部开放的端口是Web服务器分配的process.env.PORT端口。Socket.io必须使用与Web服务器相同的端口。


谢谢回复。我也得出了同样的结论。你知道除了Heroku之外还有哪些托管服务可以运行代码吗? - Gopalakrishna Kini
AWS和Digital Ocean等VPS服务可以在一个主机上运行多个端口。它是否真的必须在80端口之外监听不同的端口?您可以在Heroku上使用WebSockets。Socket.io和Express将能够在同一HTTP服务器上进行侦听。 - paolord
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Gopalakrishna Kini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接