真的很快问题。
我正在创建一个同步的流媒体应用,所以我想通过socket.io每秒发出当前正在播放的时间码,并将其广播到其他客户端。
这是明智的吗?每秒拨打同一个电话是否有任何缺点,我可以同时拨打其他电话吗?P.S。我没有进行任何数据库调用或在服务器端进行任何处理。
答案 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));
});
<小时/> 最后,您将事件监听器添加到用户正在查看的当前视频,以通知服务器计时器它已暂停/停止/单击特定视频时间等。
希望它有所帮助,这不是一个有效的解决方案,它更像是一个概念......