javascript - 使用socket.io和express,为什么我的io.on ('connection')方法不起作用

标签 javascript node.js express socket.io

我正在尝试按照本教程自学 socket.io 和 node.js:https://www.youtube.com/watch?v=tzNOqcoupWQ

这是在教程末尾编写的代码:

const express = require('express');
const app = express();
const server = require('http').Server(app);
const io = require('socket.io')(server);
const path = require('path');
const port = process.env.Port || 3000;

app.use(express.static(path.join(__dirname, 'public')));

app.set('view engine', 'ejs');

app.get('/', function(req, res){
    res.sendFile(__dirname + '/index.html');
})

server.listen(port, function(){
    console.log('Listening on port ' + port);

    io.on('connection', function(socket){
        console.log('User Connected! :)');

        //handle a new message
        socket.on('new:message', function(msgObj){
            io.emit('new:message', msgObj);
        });

        //handle a new member joining
        socket.on('new:member', function(name){
            io.emit('new:member', name);
        });
    })
});

问题是,似乎 io.on('connection' 方法没有执行,并且“用户已连接!”消息没有打印到控制台,但我的 index.html 加载得很好(现在只是一个简单的 header )。

我可以做什么来解决这个问题?

[编辑] 这是index.html

<h1>Hello, World!</h1>

最佳答案

您可能需要包含客户端套接字。即在您正在提供的 html 文件中添加以下代码。

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io();
</script>

documentation 中集成 Socket.IO是一个很好的起点。

关于javascript - 使用socket.io和express,为什么我的io.on ('connection')方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52268945/

相关文章:

javascript - 从 JS 转 HTML 转 PHP

vbscript - 我可以在单个 HTA 中混合使用 VBScript 和 JScript 吗?

javascript - react Redux : Posting Records partly work with onclick function

node.js - 如何在angular 2项目中使用 "regression-js"

javascript - 为什么 req.params 返回未定义?

javascript - 是否可以为 Node.js fs.readFile() 编写 Jest 单元测试?

javascript - 使用 Node 和 Express 4 使用 res.json 中的数据时出现非法 token

node.js - Loopback - 扩展内置模型的最简单方法

javascript - mp3 功能的 js 脚本出现问题

node.js - app.set() 可以设置哪些设置?