簡體   English   中英

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

[英]GET http://localhost:8563/socket.io/?EIO=3&transport=polling&t=NEsUPis 404 (Not Found)

我花了幾天時間試圖弄清楚為什么這不起作用,但我沒有從中得到任何結果。
我嘗試了一些關於這個主題的其他答案,但似乎沒有一個對我有用。
嘗試過的答案:
如何解決 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 (Not Found) - 如何配置 socket.IO - nodejs, apache2, websockets

Socket.io 404 未找到

這是我的代碼。 文件服務器.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>

文件 menu.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 將 p5js 頁面連接到我的節點服務器。
但是當我到達 index.html 頁面時,我得到了這個錯誤:

GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=NEsXBrx 404(未找到)
請求創建@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
輪詢.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
套接字.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

我真的不明白我的代碼有什么問題,所以我希望有人能提供幫助。
提前致謝。

您正在執行這行代碼:

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

server有值之前。 所以,你最終會這樣做:

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

這可能會在默認端口上創建一個單獨的 web 服務器,該端口不是您嘗試連接的端口。


你需要執行這行代碼:

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

AFTER server已經有一個值。

請注意,如果let使用const並刪除所有出現的var ,那么 Javascript 會適當地告訴您這是一個錯誤,因為您試圖在變量聲明之前使用它。 這在技術上對var是合法的,但顯然會導致這樣的編程錯誤。 使用letconst而不是var ,您幾乎不會輕易犯這種類型的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM