как получить сокет.ио и сервер геройки для рукопожатия? - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь подключить клиент к моему серверу, и кажется, что рукопожатие не работает, я пробовал много решений, но все они не удалось:)

и когда я загружаю веб-приложение в heroku и запустить его я получаю эту ошибку (socket. js: 6438 Соединение WebSocket с 'ws: //abdullahmultiplayergame.herokuapp.com/socket.io/? EIO = 3 & transport = websocket' не удалось: ошибка во время рукопожатия WebSocket: неожиданный ответ код: 404) и он продолжает работать, теперь он достиг 241

мой сервер. js код:

var express = require('express');
var socket = require('socket.io');


var app = express();

app.use("/", express.static(__dirname));
app.get("/", function(req, res) {
    res.sendFile("index.html");
});



var server = app.listen(process.env.PORT || 3000, function() {
    console.log("server just started listening on port 3000 ....");

}); //localhost:3000


var io = socket(server);
io.set('transports', ['websocket']);

var tanks = {};
io.on("connection", function(socket) {
    console.log("A client tried to connect with ID :: " + socket.id);
    socket.emit("GetYourID", { id: socket.id });
    socket.on("ThankYou", function() {
        console.log("The client with ID " + socket.id + " Sent me a thankyou ");

    });

    socket.on("IWasCreated", function(data) {

        if (data.id != socket.id) {
            // kick the cheater out;
        }
        tanks[data.id] = data;
        socket.broadcast.emit("AnotherTankCreated", data);

        for (key in tanks) {
            if (key == socket.id) continue;
            socket.emit("AnotherTankCreated", tanks[key]);
        }


    });

    socket.on("IMoved", function(data) {
        tanks[data.id] = data;
        socket.broadcast.emit("AnotherTankMoved", data);

    });

    socket.on("IGoAway", function(data) {
        delete tanks[socket.id];
        socket.broadcast.emit("AnotherWentAway", { id: socket.id });
    });

});

и мой основной. js код превышает 200 строк, но я я собираюсь поставить socket.io часть:


var socket;
var Game = {};
var enemies = {};

function connectToServer() {
    socket = io.connect({ transports: ["websocket"], upgrade: false });
    socket.on("connect", function() {
        console.log("connection estaplished successfully");
        socket.on("GetYourID", function(data) {
            Game.id = data.id;
            startGame();


            socket.emit("Thankyou", {});
        });
        socket.on("AnotherTankCreated", function(data) {
            createTank(scene, data);
        });

        socket.on("AnotherTankMoved", function(data) {
            var tank = enemies[data.id];
            tank.setState(data);
        });
        window.onbeforeunload = function() {
            socket.emit("IGoAway", Game.id);
            socket.disconnect();
        };

        socket.on("AnotherWentAway", function(data) {
            var tank = enemies[data.id];
            tank.dispose();
            delete enemies[data.id];


        });

    });
};

мой html код:

<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>

    <style type="text/css">
        html,
        body,
        #renderCanvas {
            width: 100%;
            height: 100%;
            padding: 0;
            margin: 0;
            overflow: hidden;
        }
    </style>
    <script src="js/socket.js"></script>
    <script src="js/babylon.max.js"></script>
    <script src="js/cannon.js"></script>
    <script type="text/javascript" src="js/main.js"></script>
    <meta charset="utf-8">
    <title>Gaming course</title>
</head>

<body>
    <canvas id="renderCanvas" width="1600" height="1200"> </canvas>


</body>

</html>

я впервые использую socket.io ваше руководство ценится, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...