nodejs приложение отлично работает локально, но не онлайн - PullRequest
0 голосов
/ 19 апреля 2020

Я создал карточную игру, используя nodejs и socket.io (первое приложение). Локально работает отлично. Я пытался разместить его на AlwaysData, но он не работает так, как он должен работать.

На локальном уровне: имя пользователя запрашивается у пользователя, когда он go на сайте. Имена пользователей отображаются. Когда два игрока находятся на сайте и ввели имя пользователя, игра начинается.

На всегда данных: Вещи go до тех пор, пока второй игрок не введет свое имя пользователя. Когда он вводит свое имя пользователя, это имя пользователя отображается для первого игрока, но не для него самого. Его имя пользователя спрашивают снова (не должно происходить). В консоли возникает ошибка: GET http://scopa.alwaysdata.net/socket.io/?EIO=3&transport=polling&t=N6HwT42 502 (Bad Gateway)

Это мой код для сервера:

const express = require('express')

const app = express();
const path = require('path');

const directory = path.join(__dirname, '.');
const Jeu = require(__dirname + '/js/Jeu.js');
const Joueur = require(__dirname + '/js/Joueur.js');


app.use(express.static(directory));
var http = require('http').createServer(app);
var io = require('socket.io')(http);

app.get('/', function(req, res){
    res.sendFile(__dirname + '/index.html');
});

function gestionsocket(){
    let joueurs = [];
    let nbConnexion = 0;
    io.on('connection', function(socket){
        ++nbConnexion;
        if(nbConnexion > 2){
            --nbConnexion;
            socket.disconnect();
            return;
        }

        //display username of the first player if it's the second player who is connected
        if(joueurs.length == 1) socket.emit("affiche pseudo", joueurs[0].pseudo);

        //ask username
        socket.emit('demande pseudo', joueurs.length + 1);

        //when username is send by the client
        socket.on('envoie pseudo', function(pseudo){
            //display username of the second player for everyone
            //things go wrong here
            io.emit("affiche pseudo", pseudo);

            joueurs.push(new Joueur(socket, pseudo));
            if(joueurs.length == 2) {
                let lesJoueurs = joueurs;
                Jeu.commencer(lesJoueurs, io);
                joueurs = [];
            }
        });



        socket.on('disconnect', function(){
            nbConnexion--;
            io.emit("deconnexion");
            joueurs = [];
        });
    });



    http.listen(process.env.PORT, process.env.IP, function(){
        console.log('listening');
    });
}


gestionsocket();

Я не понять, почему он работает локально, а не в сети, и не знаю, что делать. Я действительно извиняюсь за мой английский sh.

...