我正在尝试按照本教程自学 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/