同步多个Socket.IO客户端

时间:2018-03-14 19:13:40

标签: node.js sockets websocket synchronized

我遇到一些Socket.IO(ReactJS + NodeJS)应用程序的问题。我有应用程序同步播放YouTube视频(类似于Watch2Gether)和我有播放列表功能 - 视频结束后(例如)5个客户端发送到NodeJS操作END_OF_VIDEO和Node应该向所有客户端发送新的视频ID。这就是问题所在:我应该如何同步这个来发送1个来自播放列表的下一个视频的响应,而不是5个响应导致在播放列表中跳过5个视频(因为来自客户端的5个emmited END_OF_VIDEO动作)?

1 个答案:

答案 0 :(得分:0)

服务器:

io.on('connection', function (socket) {
  socket.on('end of video', function (video_number) {
    if(video_number){
      // Some logic to find link_to_next_video using video_number
    }
    socket.emit('next video', link_to_next_video);
  });
});

客户端:

socket.emit('end of video', current_video_number);

// Receiving 'next video' event
socket.on('next video', function(link){
  // code to play video of received link
});

这里socket.emit会发送下一个视频'发送视频结束的客户的活动'事件到服务器。

所以,无论有多少客户发送相同的视频结尾'事件到服务器。服务器将使用“下一个视频”对所有客户端进行一次响应。事件

您希望在发送视频结束时发送一些数据'来自客户的事件,以识别客户当前播放的视频,然后根据该视频链接应该与下一个视频'对该客户的事件。