使用帖子和评论构建一个简单的应用程序。
用户点击帖子并添加评论,查看同一帖子的每个人都会看到添加到帖子中的新评论。全部通过 Socket.io 完成。
这就是我实例化它的方式:
// app.js
var io = require('socket.io').listen(app.listen(app.get('port')));
var chat = io.of('/p/' + id).on('connection', function(socket) {
socket.on('addComment', function(data) {
var content = data.comment;
var comment = new commentModel({
user: req.user._id,
post_id: id,
content: content
});
comment.save(function(err, doc) {
if (err) {
return next(err);
}
commentModel.findById(doc._id).populate('user').exec(function(err, comment) {
chat.emit('newComment', {
comment: comment
});
});
});
});
});
// client-side JS
self.socket_io = io.connect(window.location.href);
self.socket_io.on('newComment', function(data) {
// do stuff with the new comment
};
第一次访问该页面时,评论会提交一次(一个套接字连接),但是,如果我刷新页面并提交新评论,则会创建两个评论(每个连接的客户端一个)。
有什么想法我哪里出错了吗?
最佳答案
确实 注释 Model.findById
需要 评论.findByID ?
关于node.js - Node Express 设计用于避免 Socket.io 中的多个客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21508777/