我正在尝试通过遵循本教程来教自己使用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加载得很好(目前仅是一个简单的标题)。
该如何解决?
[编辑] 这是index.html
<h1>Hello, World!</h1>
答案 0 :(得分:3)
您可能需要包括客户端套接字。即在要投放的html文件中添加以下代码。
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
</script>
在documentation中集成Socket.IO 是一个很好的起点。