a aplicación @Node obtiene interactivamente la entrada del usuario desde el front-end de reacción al pausar la ejecución actual

Convertí un juego antiguo que estaba escrito en python a javascript (nodo). El juego simplemente se ejecuta en un ciclo while hasta que se completa una cierta cantidad de iteraciones.

runUntil(steps = 100000) {
var x = 0;
while (x < steps) {
  this.conversation();
  x++;
}

}

conversation() {
const roundPicture = this.getRandomPicture();
const conversationers = this.utils.getRandomTwo(this.network, this.Graph);

const chosen1 = conversationers[0];
const chosen2 = conversationers[1];


if (chosen1.name == "Player 0" && !chosen1.v.hasOwnProperty(roundPicture)) {
  //Wait for user input
  //..
  //..
  //..
  //Use the given input in order to continue game

}

if (chosen2.name == "Player 0" && !chosen2.v.hasOwnProperty(roundPicture)) {
    //Wait for user input
    //..
    //..
    //..
    //Use the given input in order to continue game

} else {
  //do sth else
}

}

En algunas ocasiones, el juego se detiene para obtener la entrada del usuario que se requiere y afecta el resultado del juego. En mi implementación de JavaScript, utilicé readline-sync para pausar el juego y obtener la entrada del usuario a través del símbolo del sistema. Ahora construí una aplicación front-end de reacción para servir el juego en un navegador con interfaz de usuario, y construí un servidor usando express para manejar la API y ejecutar el juego cada vez que el usuario presiona comenzar.

const express = require("express");
const http = require("http");
const socketIO = require("socket.io");
const Game = require("./Game");
const port = 4000;
const app = express();
const server = http.createServer(app);
//Create socket usin server instance
const io = socketIO(server);

io.on("connection", socket => {

  console.log("user connected!");
  socket.on("startGame", data => {
    const nI = data.nI;
    const pI = data.pI;
    const noOfAgents = 20;
    const noOfPlayers = 1;

    const g = new Game(nI, pI, noOfAgents, noOfPlayers);
    g.runUntil(1000);
    });

  socket.on("disconnect", () => console.log("user has disconnected"));
});




server.listen(port, () => console.log("Listenint on port " + port));

Sin embargo, actualmente estoy atrapado en este punto. No estoy seguro de cómo puedo pausar el juego para obtener los datos del front-end y usarlos en consecuencia. Todos los intentos que hice hasta ahora no han tenido suerte. Intenté usar promesas, pero eso no ayudó porque no detuvo el proceso del flujo del juego para esperar la entrada del usuario.

Respuestas a la pregunta(1)

Su respuesta a la pregunta