Socket.io连接事件未触发

问题描述 投票:0回答:1

我对使用socket.io并不陌生,我已经尝试根据文档和youtube教程设置基本功能。当我导航到索引页面时,我的程序应该控制台日志“ New socket connection”。但是,该事件未触发。我想念什么吗?谢谢!

我的app.js文件

const express = require("express");
const socket = require("socket.io");
const http = require("http");
const moment = require("moment");

const app = express();
const server = http.createServer(app);
const io = socket(server);

app.set("view engine", "ejs");
// Set static folder
app.use("/public", express.static("public"));

app.get('/', (req, res) => {
  console.log("Reached index page")
  res.render("index")
});

app.get('/room', (req, res) => {
  console.log("Reach room page")
  res.render("room")
});

// Run when a client connects
io.on("connection", (socket) => {
  console.log("New socket connection")
});

const PORT = process.env.PORT || 3000;
server.listen(PORT, () => console.log(`Server running. Navigate to localhost:${PORT}`));

我的index.ejs文件

<!DOCTYPE html>
<html class="no-js">

<head>
  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <title></title>
  <link rel="icon" href="../public/">
  <meta name="description" content="" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <link rel="stylesheet" href="../public/index/css/index.css" />
</head>

<body>
  <a href="/room">click here</a>

  <script>
    var socket = io(); // this line is supposed to be sufficient to trigger
                       // the socket connection
  </script>

  <script src="../routes/index.js"></script>
  <script src="/socket.io/socket.io.js"></script>
</body>

</html>
javascript node.js express sockets socket.io
1个回答
0
投票

该错误是由于在导入socket.io依赖项时为变量“ socket”命名的结果。行“ io.on(“ connection”,(socket)”中的套接字参数应该引用另一个套接字变量,而不是我创建的套接字变量。通常的做法是将相关性变量命名为“ socketio”而不是“ socket”]。 >

© www.soinside.com 2019 - 2024. All rights reserved.