捎帶在@ benjamintrent的評論,這裏有一些OpenTok特定的示例代碼。這實際上取決於您希望如何爲用戶開票,這裏有兩種情況:
如果您希望在用戶進入聊天時開始計費,您可以向服務器發送一個指示開始時間的發佈請求:
session.on("sessionConnected", function(err){
if(!err){
$.post("/server/userId", {startTime: date.now()}, function(){...});
}
});
在大多數情況下,你可能要當用戶實際上連接到他們應該被連接到用戶開始計費:
session.on("streamCreated", function(stream){
if(stream.connection.connectionData == "username I was supposed to connect to"){
$.post("/server/userId", {startTime: date.now()}, function(){...});
}
});
你可能要結束時,視頻聊天會話他從一個會話中斷開,或者如果每個會話都被斷開兒子你應該去跟離開聊天室:
session.on("streamDestroyed", function(stream){
if(stream.connection.connectionData == "username I was supposed to connect to"){
$.post("/server/userId", {endTime: date.now()}, function(){...});
}
});
不幸的是,如果用戶關閉瀏覽器,你不會得到sessionDisconnected或streamDestroyed事件。爲了解決這個問題,您可以每5秒向服務器發送一次心跳發佈請求。如果服務器停止接收心跳請求並相應地結束計費,您的服務器將知道用戶已關閉瀏覽器。
setInterval(function(){
$.post("/heartbeat/userId", {currentTime: date.now()}, function(){...});
}, 5000);
希望有幫助,祝你好運!
這與opentok或webrtc無關。你只需要計算用戶訪問特定頁面的時間量......因爲他們已經登錄了,所以你應該能夠從服務器追蹤它。或者一旦getusermedia被觸發,就立即向服務器發出定時器信號。 –
感謝您的反饋,但您建議的風險有點高。即使會議沒有開始,頁面成員用來進行視頻會議的任何時間都可以訪問,假設預定的會議是明天,而今天你只是登錄瀏覽並碰巧訪問視頻會議頁面,那麼又是什麼? – Baig
然後,當對等連接開始並且SDP開始交換時,您可以啓動計時器。 –