Javascript socket.io每秒发射一次

Javascript socket.io每秒发射一次,javascript,node.js,sockets,socket.io,Javascript,Node.js,Sockets,Socket.io,很快的问题 我正在创建一个同步流媒体应用程序,因此我希望通过socket.io发送每秒正在播放的内容的当前时间码,并将其向下广播到其他客户端 这明智吗?每秒打同一个电话有什么缺点吗?我可以同时打其他电话吗 另外,我不会打任何数据库电话或在服务器端进行任何处理。没有太多的客户端观看视频,这应该没问题,但如果观看视频的用户数量开始增加,最终你会遇到小的延迟 另一种方法是跟踪服务器,例如,您可以这样做 使用autoplay加载视频或发出事件以启动计时器服务器端 // from client-side

很快的问题

我正在创建一个同步流媒体应用程序,因此我希望通过socket.io发送每秒正在播放的内容的当前时间码,并将其向下广播到其他客户端

这明智吗?每秒打同一个电话有什么缺点吗?我可以同时打其他电话吗


另外,我不会打任何数据库电话或在服务器端进行任何处理。

没有太多的客户端观看视频,这应该没问题,但如果观看视频的用户数量开始增加,最终你会遇到小的延迟

另一种方法是跟踪服务器,例如,您可以这样做

使用autoplay加载视频或发出事件以启动计时器服务器端

// from client-side
socket.emit('videoplaying',/* some video data */);

在服务器端,您可以根据套接字ID启动小计时器

function Timer(VideoInformation){
  this.currentTime=0;
  this.startedAt=+new Date();
  this.endedAt=null;
  this.title=VideoInformation.title||'Untitled';
  this.interval=null;
  this.play=function(){
  var self=this;
   this.interval=setInterval(function(){ self.currentTime=+new Date(); },1000);
  }
  this.stop=function(){
   if(this.interval!==null){ clearInterval(this.interval) }
  }
  //.. pause/end/reset ..
}
//server side
var TimeTracker={};
// handling new videoplaying
socket.on('videoplaying',function(videoInformation){
 if(!TimeTracker.hasOwnProperty(socket.id)){
  TimeTracker[socket.id]=[];
 }
 TimeTracker[socket.id].push(new Timer(videoInformation));
});

最后,将事件侦听器添加到用户正在查看的当前视频中,以通知服务器计时器它已暂停/停止/单击特定视频时间等


希望有帮助,这不是一个有效的解决方案,更多的是一个概念。

这正是我需要的!我只是刚刚意识到,我希望时间跟踪独立于任何用户。因此,如果我能在第一个用户加入时运行一个跟踪器,那就太完美了。我欠你我所有的互联网,先生!