首页 > 解决方案 > (Heroku)如何将 HTTP 请求从我的网络测功机发送到我的服务器测功机

问题描述

我问这个问题是因为在搜索互联网后,我找不到任何关于此的信息。可能我根本不应该问这个问题,但这让我发疯,所以我们开始吧。

我有一个带有两个测功机的 Heroku 应用程序。我的前端(Angular)有一个网络测功机,我的后端(节点)有一个服务器测功机。我想从我的前端发送一个 HTTP 请求到我宁静的后端。这可能吗?

我知道我可以通过将它们分成两个应用程序来实现这一点,但如果可能的话,我希望将它们保留在一个应用程序中。

这是我的 Procfile 以及一些附加信息。他们正在成功部署,我只想直观地了解我正在部署的内容。

web: cd frontend && npm start
server: node app.js

如果这甚至不可能做到,那么任何比我知识渊博的人都会感谢任何帮助。

标签: herokudyno

解决方案


可能的。例子:

const http = require('http');
const path = require('path');
const express = require('express');
const WSServer = require('ws').Server;
const DateFormat = require('dateformat');

let wss;
let server;
const app = express();
app.use(express.static(path.join(__dirname, './../build')));

server = new http.createServer(app);
wss = new WSServer({ server })

this.wss = wss;
wss.on('connection', function(socket) {
    console.log(DateFormat(new Date(), 'm/d h:MM:ss TT'),
        `client connected to server (${wss.clients.size} total)`);
    socket.on('message', function(data) {
        console.log(data)
    });
    socket.on('close', function(code, desc) {
        console.log(DateFormat(new Date(),
            "h:MM:ss TT"),'client disconnected, total:', wss.clients.length);
    });
});
wss.on('listening', () => console.log('Websocket listening on port', config.get('port')));
wss.on('error', err => console.log('Websocket server error:', err));

server.on('error', err => console.log('Server error:', err));
server.listen(process.env.PORT);

在这里,我正在部署一个位于../build并为它服务的静态前端。我正在使用在相同地址上运行但在不同协议下运行的 websocket 功能扩展 Web 服务器。

您也可以只使用 http。您必须分开路线。


推荐阅读