部署使用两个端口的应用程序

米克

我正在用 Vue 实现一个网络应用程序。在我的应用程序中,我使用 Pusher 来实现实时多用户通信。

在本地,该应用程序在“ http://localhost:8080 ”上运行,我在“ http://localhost:5000上设置了一个 node.js 服务器,该服务器管理推送器共享频道上的用户订阅和它们之间的事件共享。该应用程序运行良好。现在我想将它部署在托管服务器上以使其在 Internet 上运行。

我的问题与需要使用两个不同的端口有关。特别是我不知道如何组织我的“server.js”文件来做到这一点(或者像 Heroku 这样的平台是否可以支持使用两个端口)。下面我发布了我的实际“server.js”文件。我希望你可以帮助我。

const express = require('express')
const path = require('path')
const bodyParser = require('body-parser')
const app = express()
const Pusher = require('pusher')
const crypto = require('crypto')
const cors = require('cors')


//initialize Pusher with your appId, key and secret
const pusher = new Pusher({
   appId: '***',
key: '******',
secret: '*****',
cluster: 'eu',
useTLS: true
})

// Body parser middleware
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false}))
app.use(cors())
// The code below helps to fix any potential CORS issue.
app.use((req, res, next) => {
  // Website you wish to allow to connect
  res.setHeader('Access-Control-Allow-Origin', '*')
  // Request methods you wish to allow
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE')
  // Request headers you wish to allow
  res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type')

  // Set to true if you need the website to include cookies in the requests sent
  // to the API (e.g. in case you use sessions)
  res.setHeader('Access-Control-Allow-Credentials', false)
  // Pass to next layer of middleware
  next()
})

// Index API route for the Express app
app.get('/', (req, res) => {
  res.send('Welcome')
})

// API route used by Pusher as a way of authenticating users
app.post('/pusher/auth', (req, res) => {
  let socketId = req.body.socket_id
  let channel = req.body.channel_name
  // Generate a random string and use as presence channel user_id
  let presenceData = {
    user_id: crypto.randomBytes(16).toString('hex')
  }
  let auth = pusher.authenticate(socketId, channel, presenceData)
  res.send(auth)
})

// Set port to be used by Node.js
app.set('port', (5000))

app.listen(app.get('port'), () => {
  console.log('Node app is running on port', app.get('port'))
})

您使用的是 Vue,因此在开发中,前端由 Webpack 的 devServer 在端口 8080 上本地提供服务。您还在开发中运行一个节点服务器,它模拟生产服务器的 API 部分。

在实际生产中,不需要2台服务器或2个端口。在生产中,您的前端不需要专用服务器。这只是为了快速方便的开发。让节点生产服务器也为前端服务。像这样的事情取决于您的服务器结构:

// Static assets
app.use(express.static(path.join(__dirname, 'dist')));

Heroku 不支持多个端口,您也不需要它们。从一个域同时服务后端和前端是可能的(也是正常的)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

CloudFoundry应用程序打开两个端口

如何在两个应用程序中使用一个端口?

Visual Studio项目使用不同的端口创建两个相等的IIS应用程序

部署两个应用程序与谷歌应用程序引擎

如何配置两个不同的Web应用程序以在同一主机/端口上与Apache一起使用?

如果两个不同的应用程序使用不同的协议,是否可以在主机上绑定相同的端口?

使用composer同时开发两个应用程序

使用tk框架合并两个应用程序

Spring Boot应用程序在两个不同的端口上具有两个服务

在同一端口上运行两个Web应用程序?

两个应用程序可以侦听同一端口吗?

为什么大多数应用程序协议都分配了两个端口?

部署为网络应用程序的两个Google应用程序脚本之间的localStorage访问

为部署在码头上的两个应用程序设置不同的Java系统属性

在两个不同的主机上部署 React + API 应用程序

在Windows Phone上部署两个以上的开发人员应用程序

部署两个asp.net核心应用程序,在一个解决方案中对nginx

同时使用两个 spring 启动应用程序时注销了一个 spring 应用程序

在两个单独的文件夹中使用客户端和服务器将节点应用程序部署到heroku

如何在天蓝色的两个不同端口上公开容器的Web应用程序?

JHipster 应用程序生成问题 - 服务器端口上创建的两个应用程序之间发生冲突

如何使用应用程序 A 的两个因素和应用程序 B 的两个因素不使用相同的用户登录?

在使用 Inno Setup 安装的两个应用程序之间共享注册的 .NET 程序集

weblogic AS:在具有两个受管服务器的集群上部署的应用程序

在两个不同的Websphere 8配置文件中部署的同一应用程序共享会话?

应用程序部署在两个节点上时如何只读取一次文件

如何使用一个公共 IP 映射两个 azure 应用程序?

如何在“一个”应用程序中使用两个Parse帐户

在同一应用程序上使用两个Facebook应用程序ID进行测试