socket.io每秒发出一次

时间:2014-04-08 01:11:41

标签: javascript node.js sockets socket.io

真的很快问题。

我正在创建一个同步的流媒体应用,所以我想通过socket.io每秒发出当前正在播放的时间码,并将其广播到其他客户端。

这是明智的吗?每秒拨打同一个电话是否有任何缺点,我可以同时拨打其他电话吗?

P.S。我没有进行任何数据库调用或在服务器端进行任何处理。

1 个答案:

答案 0 :(得分:1)

没有很多客户观看视频应该没问题,但如果观看的用户数量开始变大,最终会遇到小的滞后。

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

视频加载自动播放或发出事件以启动计时器服务器端

// 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));
});

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

希望它有所帮助,这不是一个有效的解决方案,它更像是一个概念......