javascript - socket.io 每秒发出一次

标签 javascript node.js sockets socket.io

非常快的问题。

我正在创建一个同步流应用程序,因此我想通过 socket.io 发出每秒播放内容的当前时间码,并将其广播给其他客户端。

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

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

最佳答案

如果观看视频的客户不多,应该没问题,但如果观看的用户数量开始变大,最终您会遇到轻微的延迟。

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

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

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


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

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

关于javascript - socket.io 每秒发出一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22925865/

相关文章:

javascript - 为什么我的复选框上的 <required> 属性不工作,尽管已经设置了一些 JS 代码使其成为一个要求?

node.js - knex 是否支持云 Spanner

java - Java 网络程序中通过套接字发送的字符串中的最后几个字符有时会丢失

javascript - swagger-无法识别的响应类型;将内容显示为文本

Python TCP 套接字数据有时会丢失部分。套接字溢出?

java - DatagramPacket 未传输正确的消息

javascript - 从移动浏览器上的 Web 应用程序自动调用电话号码

javascript - 通过 Ruby On Rails 中 jquery 的 onclick 函数传递对象的 id

javascript - 链式转换不会逐步触发

node.js - 从 npm 迁移到 yarn 时出错 - 引擎 "node"与此模块不兼容