2013-03-24 65 views
0

我正在构建一个允许同时观看多个游戏流的应用程序。我希望客户端在节点服务器开始观看流时以及客户端停止观看该流时告诉节点服务器。这样,我可以跟踪用户观看特定流的时间,并将该流添加到他们的观看历史记录中。节点应用程序使用情况跟踪,我应该如何处理这个问题?

我的问题是:我该如何去做这件事?我正在考虑建立保持活力的ping,一旦我发现最后一个是自上一次以来的合理时间,客户就被认为已经停止观看一个流。这似乎有点麻烦,适当设置。我想知道是否有一个图书馆可以让我轻松做到这一点。我已经看过socket.io,但我不太了解它的目的,或者它适用于我的情况。

在此先感谢!

回答

1

您可以使用socket.io来执行此操作。在socket.io中有内置的心跳funcionality。你需要做的是处理disconnected事件。更多信息在:https://github.com/LearnBoost/socket.io-spec

更新:

在您的客户端:

socket.emit('startWatch', { streamid: 'stream1' }); 
.... 
socket.emit('stopWatch', {}); 

在您的服务器:

io.sockets.on('connection', function (socket) { 
    // listen to startWatch event 
    socket.on('startWatch', function (msg) { 
    // handle startWatch here 
    }); 

    //listen to stopWatch event 
    var stopWatchHandler = function() {... } 
    socket.on('stopWatch", stopWatchHandler); 
    socket.on('disconnected", stopWatchHandler); 
}); 
+0

由于这是针对一个客户端上的多个流,我假设有一种方法来设置自定义事件?当他们开始流我会告诉服务器通过“开始”之类的事件,那么无论是在手动关闭或断开我可以做“停止”? – MaxGhost 2013-03-24 05:09:46

+1

@MaxGhost是的。在你的客户端: – Chen 2013-03-24 06:08:05

+1

@MaxGhost查看更新的答案。 – Chen 2013-03-24 06:14:14

1

Socket.io(或类似)就是你想。

io.sockets.on('connection', function (socket) { 
    console.log('user connected'); 
    socket.on('disconnect', function() { 
    console.log('user disconnected'); 
    }); 
}); 
+0

是什么“等等”,所以我可以探索我的选择? – MaxGhost 2013-03-24 05:13:27

+1

这里有一些:https://github.com/sockjs/sockjs-client,https://github.com/substack/shoe,https://github.com/LearnBoost/engine.io 他们处理事情的多个Web套接字协议,诸如XHR之类的回退,到最上层的消息协议。 – generalhenry 2013-03-24 05:17:21

相关问题