我已经使用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();
我不明白为什么它在本地运行而不在线,也不知道该怎么办。 我真的很抱歉我的英语。