nodejs应用程序在本地运行良好,但无法在线运行

时间:2020-04-19 11:40:19

标签: node.js web socket.io

我已经使用nodejs和socket.io(第一个应用程序)创建了一个纸牌游戏。 在本地,它运行完美。 我尝试将其托管在alwaysdata上,但是它无法正常运行。

在本地:当用户访问该网站时,系统会询问用户名。显示用户名。当网站上有两个玩家并输入用户名时,游戏开始。

在alwaysdata上:一切顺利,直到第二位玩家输入了他的用户名。当他输入用户名时,该用户名将显示给第一位玩家,但不会显示给自己。再次询问他的用户名(不应该发生)。在控制台中有一个错误: GET http://scopa.alwaysdata.net/socket.io/?EIO=3&transport=polling&t=N6HwT42 502(错误网关)

这是我的服务器代码:

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();

我不明白为什么它在本地运行而不在线,也不知道该怎么办。 我真的很抱歉我的英语。

0 个答案:

没有答案