GET http://localhost: 8563 / socket.io /? EIO = 3 & transport = polling & t = NEsUPis 404 (не найдено) - PullRequest
0 голосов
/ 04 августа 2020

Я потратил дни, пытаясь понять, почему это не работает, но я ничего из этого не получил.
Я пробовал другие ответы на этот топи c, но, похоже, ни один из них не работал me.
Попытка ответов:
Как устранить ошибку Socket.io 404 (не найдено)?

socket.io: не удалось загрузить ресурс

GET http://localhost: 3000 / socket.io / socket.io. js 404 (не найдено)

Ошибка: http://localhost : 3001 / socket.io / 404 (не найдено)

Socket.io http://localhost: 3000 / socket.io / socket.io. js 404 (не найдено) - Как настроить socket.IO - nodejs, apache2, websockets

Socket.io 404 Not Found

Это мой код. Файловый сервер. js:

//Dependencies
var express = require('express');
var io = require('socket.io').listen(server);
//Dependencies

//Global variables
var app = express();
var PORT = 3000;
const ROOT = {root : __dirname};
var players = [];
//Global variables

var server = app.listen(PORT, function() {
    console.log("Server process started successfully on port " + PORT + "\n");
});

app.get('/', function(req, res) {
    console.log("Server called from " + req.socket.remoteAddress + ":" + req.socket.remotePort + "\n");
    res.sendFile('html/access.html', ROOT);
});

app.get('/gameSelection', function(req, res) {
    let name = req.query.name;
    players.push(name);
    console.log("New player named " + name + " joined the hub." + "\n");
    console.log("Total active players: " + players.length + "\n");
    console.log("Complete list of active players: " + players + "\n");
    res.sendFile('sketches/menu/index.html', ROOT);
});

app.use(express.static(__dirname + '/sketches/menu'));

io.sockets.on('connection', function(socket){
    console.log("We have a new client: " + socket.id);
});

Доступ к файлам. html:

<!DOCTYPE html>
<html>
    <head>
        <title>Welcome traveler</title>
    </head>
    <body>
        <form method="GET" action="/gameSelection">
            Name: <input type="text" name="name" placeholder="Insert your name..." required>
            <input type="submit" value="submit">
        </form>
    </body>
</html>

Меню файлов. js:

const socket = io.connect(window.location.origin);

function setup()
{
    createCanvas(600, 400);
    ellipse(100, 100, 50, 50);
}

function draw() {}

Индекс файла . html:

<html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <script language="javascript" type="text/javascript" src="libraries/p5.min.js"></script>
  <script language="javascript" type="text/javascript" src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
  <script language="javascript" type="text/javascript" src="menu.js"></script>

  <style> body { padding: 0; margin: 0; } </style>
</head>
<body>
</body>
</html>

Как показано в коде, я пытаюсь подключить через socket.io страницу p5 js к моему серверу узла.
Но когда я добираюсь до index. html page Я получаю эту ошибку:

GET http://localhost: 3000 / socket.io /? EIO = 3 & transport = polling & t = NEsXBrx 404 (Not Found)
Request.create @ socket.io-1.4.5. js: 1
Request @ socket.io-1.4.5. js: 1
XHR.request @ socket.io-1.4.5. js: 1
XHR.doPoll @ socket.io-1.4.5. js: 1
Polling.poll @ socket.io-1.4.5. js: 1
Опрос. doOpen @ socket.io-1.4.5. js: 1
Transport.open @ socket.io-1.4.5. js: 1
Socket.open @ socket.io-1.4.5. js: 1
Socket @ socket.io-1.4.5. js: 1
Socket @ socket.io-1.4.5. js: 1
Manager.open.Manager. connect @ socket.io-1.4.5. js: 2
(анонимно) @ socket.io-1.4.5. js: 3

Я действительно nне понимаю, что не так с моим кодом, поэтому я надеюсь, что кто-нибудь может помочь.
Заранее спасибо.

1 Ответ

1 голос
/ 04 августа 2020

Вы выполняете эту строку кода:

var io = require('socket.io').listen(server);

До того, как server будет иметь значение. Итак, вы в конечном итоге сделаете это:

var io = require('socket.io').listen(undefined);

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

Вам необходимо выполнить эту строку кода:

var io = require('socket.io').listen(server);

ПОСЛЕ server уже имеет значение.

Обратите внимание, если вы используете const и let и получите избавиться от всех вхождений var, тогда Javascript надлежащим образом сообщит вам, что это была ошибка, потому что вы пытаетесь использовать переменную до ее объявления. Это технически допустимо для var, но, очевидно, приводит к таким ошибкам программирования. Используйте let и const вместо var, и вы не сможете так легко сделать такую ​​ошибку.

...