使用Heroku部署NodeJS

643ylb08  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(302)

我正在Heroku上上传我的NodeJS项目。这个项目是一个多人游戏,本地代码对我有效,两个玩家进入同一张Map。但是,在Heroku中,我不能让两个玩家进入同一张Map。
我留下NODEJS代码

const express = require("express")
const cors = require("cors")

const app = express()

app.use(express.static('public'))
app.use(cors())
app.use(express.json())

const jugadores = []

const PORT = process.env.PORT || 8080

class Jugador {
  constructor(id) {
    this.id = id
  }

  asignarMokepon(mokepon) {
    this.mokepon = mokepon
  }

  actualizarPosicion(x, y) {
    this.x = x
    this.y = y
  }

  asignarAtaques(ataques) {
    this.ataques = ataques
  }
}

class Mokepon {
  constructor(nombre) {
    this.nombre = nombre
  }
}

app.get("/unirse", (req, res) => {
  const id = `${Math.random()}`

  const jugador = new Jugador(id)

  jugadores.push(jugador)

  res.setHeader("Access-Control-Allow-Origin", "*")
  
  res.send(id)
})

app.post("/mokepon/:jugadorId", (req, res) => {
  const jugadorId = req.params.jugadorId || ""
  const nombre = req.body.mokepon || ""
  const mokepon = new Mokepon(nombre)
  
  const jugadorIndex = jugadores.findIndex((jugador) => jugadorId === jugador.id)

  if (jugadorIndex >= 0) {
    jugadores[jugadorIndex].asignarMokepon(mokepon)
  }
  
  console.log(jugadores)
  console.log(jugadorId)
  res.end()
})

app.listen(PORT, () => {
  console.log("Servidor funcionando", PORT)
})

我在这里留下了一小部分代码,因为不可能发布这么多代码。但是我在GitHub上留下了一个仓库链接
Heroku上托管的页面链接:GitHub上的https://proyecto-mokepon.herokuapp.com/代码链接:https://github.com/IamMatiasBazan/proyecto-mokepon
它在本地为每个玩家enter image description here生成随机数
在Heroku部署后,我看到:enter image description here

cnjp1d6j

cnjp1d6j1#

您发送的请求指向您的js文件中的localhost(多个位置,但这是一个)。在这里您应该考虑将其更改为heroku域或仅/mokepon/${jugadorId}/ataques(或其他)。
它看起来也像是应用程序每50ms发送一个新的请求,即使什么都没有发生。在这种情况下,我建议你调查一下socket.io,以防止应用程序每次都发送无用的请求。

相关问题