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

Posted

技术标签:

【中文标题】GET http://localhost:8080/socket.io/?EIO=3&transport=polling&t=McNiz_D 404(未找到)【英文标题】:GET http://localhost:8080/socket.io/?EIO=3&transport=polling&t=McNiz_D 404 (Not Found) 【发布时间】:2019-03-19 20:55:34 【问题描述】:

我正在基于 nodejs 中的 websocket 创建一个服务器作为后端,离子 4 应用程序作为前端,当我尝试连接到我的服务器时出现此错误

GET http://localhost:8080/socket.io/?EIO=3&transport=polling&t=McNiz_D 404 (Not Found)

这是我的服务器代码

const PORT = 8080;
const WebSocket = require("ws").Server;
var express = require("express");
var app = express();

app.use(function(req, res, next) 
 res.header("Access-Control-Allow-Origin", "http://localhost:8100");
 res.header(
  "Access-Control-Allow-Headers",
  "Origin, X-Requested-With, Content-Type, Accept"
);
 res.header("Access-Control-Allow-Credentials", true);
 next();
);
var http = require("http").createServer(app);

http.listen(PORT, "localhost", function() 
console.log("listening in http://localhost:" + PORT);
);
const wss = new WebSocket( server: http );
 wss.on("connection", function connection(ws) 
  ws.on("message", function incoming(message) 
  console.log("received: %s", message);
 );
 ws.send("I am server ^_^");
);

【问题讨论】:

你能发布你的前端代码吗?好像您在后端使用 websockets 协议,在前端使用 socket.io 谢谢,这是问题所在,但错误是什么意思? 请参考答案 【参考方案1】:

为了将来的参考和您想要更多的说明,这是因为在后端使用 websockets 协议,在前端使用 socket.io 而不是普通的 WebSockets 客户端。


当socket.io想要连接到服务器时,upgrade请求被发送到http://localhost:8080/socket.io/?EIO=3&transport=polling&t=McNiz_D 404这个路径。由于后端没有配置socket io服务器,显然express server发送404 not found而不是升级响应。

【讨论】:

您好,当我们使用 S3 存储桶来托管我们的无服务器应用程序时,我们面临着类似的问题。正如您的回答所暗示的,socket io 还需要后端的服务器来进行完整的握手,有什么方法可以实现吗?

以上是关于GET http://localhost:8080/socket.io/?EIO=3&transport=polling&t=McNiz_D 404(未找到)的主要内容,如果未能解决你的问题,请参考以下文章

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

GET http://localhost:8080/WEB-INF/js/jquery-3.4.1.min.js net::ERR_ABORTED 404

解决vue 问题 post 请求发送 会变成发送get请求

1.rest之@Get和@Post请求的区别:

get请求如何传递数组参数

申请打开网页,浏览器缓存初体验