NodeJS-单个打开的端口,用于通用TCP连接,快速HTTP和socket.io服务器

问题描述

我正在尝试制作要在Heroku上部署的应用程序,但我读到我只能在Heroku应用程序中打开1个端口。问题是我需要打开通用的TCP连接,以侦听未通过HTTP协议发送的数据。因此,我使用“ net”库创建服务器,但是现在我需要侦听常规的HTTP连接以提供一些静态文件(最好使用express),还需要侦听使用socket.io进行的websocket连接。

或者,如果有一种方法可以在heroku(具有免费层)上打开多个端口,那也很好。

感谢您的帮助

这是我当前的应用状态:

// NodeJS imports
const fs = require('fs');
const path = require('path');
const net = require('net');
// Dependency imports
const socketIO = require('socket.io');
// App imports
const log = require('./log');

// App
const PORT = process.env.PORT || 5000;
const server = net.createServer();

const io = socketIO(server);
io.on('connection',(socket) => {
  console.log(socket);
});

server.on('connection',(connection) => {
  log(`Incoming connection from: ${connection.remoteAddress}:${connection.remotePort}`);

  connection.on('data',(msg) => {
    msg = msg.toString();

    if (msg.includes('HTTP/')) {
      // Redirect to express or websocket to serve static files or make websocket connection
      log('HTTP REQUEST');
      connection.write(Buffer.from('Hello World!'));
      return;
    }

    log(msg);
  });
});

server.listen(PORT,() => {
  log(`App started. App running on port ${PORT}`);
});

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)