Я пытаюсь подключить клиент к моему серверу, и кажется, что рукопожатие не работает, я пробовал много решений, но все они не удалось:)
и когда я загружаю веб-приложение в 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 ваше руководство ценится, спасибо.