Js *_*Lim 0 javascript node.js express socket.io
我参考这个 repo来集成 socket.io。
我想要实现的是,每秒发送到客户端的倒数计时器setInterval
在服务器端运行。我得到的结果是
那里的终端on.('connection')
,我第一次刷新页面时,它执行了 4 次on.('connection')
,倒计时工作正常。然后我第二次刷新,它执行了 8 次on.('connection')
,并且倒数计时器那里也有 2 个值。然后继续……12次,16次……
在app.js 中
app.use(function(req, res, next){
res.io = io;
io.on('connection', function(socket) {
console.log(socket.id + ' connected.');
});
next();
});
Run Code Online (Sandbox Code Playgroud)
在路由/users.js
router.get('/', function(req, res, next) {
models.User.findAll({
include: [ {model: models.Task, as: 'tasks'} ]
}).then(function(users) {
var eventTime= new Date('2017-03-31 13:00:00').getTime();
var currentTime = new Date().getTime();
var diffTime = eventTime - currentTime;
var duration = moment.duration(diffTime*1000, 'milliseconds');
var interval = 1000;
setInterval(function() {
duration = moment.duration(duration - interval, 'milliseconds');
res.io.emit('countdown', { time_left: duration.hours() + ":" + duration.minutes() + ":" + duration.seconds() });
}, interval);
res.render('users', {
title: 'Sequelize: Express Example',
users: users
});
});
});
Run Code Online (Sandbox Code Playgroud)
这里有什么问题吗?
我在这里找到了答案
io.on('connection', function(socket) {
socket.removeAllListeners(); <---------- ADD THIS LINE
console.log(socket.id + ' connected.');
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
936 次 |
最近记录: |