我有一个node.js服务器和客户端。客户端有一个video.js播放器,progressbar.js和socket.io。我希望progressbars显示其他用户的缓冲区百分比。
这是一段服务器来源
function updateProgressBars() {
io.sockets.emit('updateProgressBars'); //Send data to everyone
}
socket.on('userProgressBarUpdate',
function(data) {
socket.broadcast.emit('changeLocalProgressBar', data); //Send data to everyone but not sender
});
这是客户
socket.on('updateProgressBars',
function() {
var bufferLevel = myPlayer.bufferedPercent();
var data = {
bl: bufferLevel,
n: name
}
socket.emit('userProgressBarUpdate', data); //Send data to server
});
changeLocalProgressBarLevel
只是在客户端更改进度条,所以不用担心。
如何每秒调用updateProgressBars()
。
答案 0 :(得分:4)
你可以通过使用f.e实现这一点。 “setInterval”函数。
function doStuff() {
//do Stuff here
}
setInterval(doStuff, 1000); //time is in ms
甚至更好:
let myVar = setInterval(function(){ timer() }, 1000);
function timer() {
//do stuff here
}
function stopFunction() {
clearInterval(myVar);
}
答案 1 :(得分:1)
您可以使用setInterval(function(){ ... }, timeMiliSeconds)
setInterval(function(){ console.log("hi")},1000) //logs hi every second
答案 2 :(得分:0)
使用setInterval
不是最佳选择,因为您应始终clearInterval
。我更喜欢使用bluebird promises的递归:
function a()
{
if(smthCompleted)
dosmth();
else return Promise.delay(1000).then(() => a());
}
通过这种方式,您可以更好地控制代码。