GET http:// localhost:8563 / socket.io /?EIO = 3&transport = polling&t = NEsUPis 404(未找到)

时间:2020-08-03 23:10:09

标签: javascript node.js sockets socket.io p5.js

我花了几天的时间来弄清楚为什么它不起作用,但是我什么都没得到。
我尝试了有关该主题的其他答案,但似乎没有一个对我有用。
尝试的答案:
How to resolve a Socket.io 404 (Not Found) error?

socket.io: Failed to load resource

GET http://localhost:3000/socket.io/socket.io.js 404 (Not Found)

Error: http://localhost:3001/socket.io/ 404 (Not Found)

Socket.io http://localhost:3000/socket.io/socket.io.js 404 (Not Found) - How to configure socket.IO - nodejs, apache2, websockets

Socket.io 404 Not Found

这是我的代码。 文件server.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);
});

文件access.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>

文件menu.js:

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

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

function draw() {}

文件index.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将p5js页面连接到我的节点服务器。
但是当我进入index.html页面时,出现此错误:

获取http:// localhost:3000 / socket.io /?EIO = 3&transport = polling&t = NEsXBrx 404(未找到)
Request.create @ socket.io-1.4.5.js:1
请求@ 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
Polling.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.io-1.4.5.js:1
套接字@ 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

我真的不明白我的代码有什么问题,所以我希望有人可以提供帮助。
预先感谢。

1 个答案:

答案 0 :(得分:2)

您正在执行以下代码行:

mActivity.runOnUiThread { 
    // show your Toast
}

var io = require('socket.io').listen(server); 之前有一个值。因此,您最终会这样做:

server

这可能会在默认端口(不是您尝试连接的端口)上创建单独的Web服务器。


您需要执行以下代码行:

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

var io = require('socket.io').listen(server); 之后已经有一个值。

请注意,如果您使用serverconst并摆脱了所有let的情况,那么Javascript会适当地告诉您这是一个错误,因为您正尝试使用声明之前的变量。从技术上讲,var是合法的,但是显然会导致这样的编程错误。使用varlet而不是const,您几乎无法轻易犯此类错误。