javascript - HTML 文件无法连接到 socketio

标签 javascript html node.js websocket socket.io

我的文件系统中有一个新的 HTML 文件,如下所示:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Minimal working example</title>
</head>

<body>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js"></script>
    <script>
        const socket = io("http://localhost:5000", {
            transports: ['websocket']
        });

        socket.on('connect', () => console.log("connect"));
    </script>
</body>

</html>

我还有一个在本地主机上运行的 javascript socketio 服务器:

const express = require("express")
const SocketIO = require("socket.io")
const http = require("http")

const app = express()
const PORT = process.env.PORT || 5000

const server = http.createServer(app)
const io = SocketIO(server)

app.get("/", (_, res) => res.send("Home"))

io.on("connection", socket => {
    console.log("connection!")
})

server.listen(PORT, () => console.log(`Sever running on ${PORT}`))

为什么我的服务器从不记录任何内容???

最佳答案

从同一个后端为前端提供服务

经过仔细检查,您没有从同一主机/端口提供 HTML 文件。您的 index.html 文件在尝试连接时可能会出现 CORS 错误,因为它是未经批准的跨源。

我替换了这一行:

app.get("/", (_, res) => res.send("Home"))

用这一行。从同一文件夹提供index.html 文件(不推荐)

app.use(express.static('.'))

两者都在同一域上运行,连接记录成功。

关于javascript - HTML 文件无法连接到 socketio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64832285/

相关文章:

javascript - 我的 .done() Mocha 测试出了什么问题?

javascript - 捕获开始标签但不捕获结束标签

C++ cURL - 如何将完整网页保存到文件中?

node.js - 网络包 `the request of a dependency is an expression`

javascript - 在 express 和 ejs 中使用 socket io

javascript - ReactJS 中的 Bootstrap 行

javascript - 如何显示JS当前使用的H1字体

javascript - 如何在jquery中每组新数据后面放置一个br标签

jquery 脚本适用于所有离线和在线浏览器,但 chrome 在线除外

node.js - AWS 无服务器图像处理程序 - 版本 5 - 在 Node.js 12 上运行的 Lambda 生命周期结束