我遇到一些Socket.IO(ReactJS + NodeJS)应用程序的问题。我有应用程序同步播放YouTube视频(类似于Watch2Gether)和我有播放列表功能 - 视频结束后(例如)5个客户端发送到NodeJS操作END_OF_VIDEO和Node应该向所有客户端发送新的视频ID。这就是问题所在:我应该如何同步这个来发送1个来自播放列表的下一个视频的响应,而不是5个响应导致在播放列表中跳过5个视频(因为来自客户端的5个emmited END_OF_VIDEO动作)?
答案 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会发送下一个视频'发送视频结束的客户的活动'事件到服务器。
所以,无论有多少客户发送相同的视频结尾'事件到服务器。服务器将使用“下一个视频”对所有客户端进行一次响应。事件
您希望在发送视频结束时发送一些数据'来自客户的事件,以识别客户当前播放的视频,然后根据该视频链接应该与下一个视频'对该客户的事件。