首页 > 解决方案 > 未调用socket.io“连接”事件

问题描述

我正在尝试使用 express 和 socket.io 创建一个非常简单的服务器。当我打开网页 (at localhost:2000) 时,我可以看到 HTML 文件,但io.sockets.on("connection")没有调用该事件,并且"socket connection"在控制台中看不到。

app.js

var express = require("express");
var app = express();
var serv = require("http").Server(app);

app.get("/",function(req, res) {
  res.sendFile(__dirname + "/client/index.html");
});
app.use("/client", express.static(__dirname + "/client"));

serv.listen(2000)

var io = require("socket.io")(serv,{});
io.sockets.on("connection", function(socket) {
  console.log("socket connection")
});

index.html

<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
<script>
var socket = io();
</script>

我以前通过 npm安装express过。socket.io

我怎样才能解决这个问题?我在 macOS 11.1 上运行node.js v12.13.1express 6.12.1socket.io 6.12.1

标签: javascriptnode.jsexpresssocketssocket.io

解决方案


刚刚想通了。我使用的 CDN 已经过时了。

index.html中,我替换了

<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/3.1.0/socket.io.js"></script>

推荐阅读