В дополнение к комментариям @benjamintrent, вот несколько примеров кода для OpenTok. Это действительно зависит от того, как вы хотите выставлять счета своим пользователям, вот 2 случая:
Если вы хотите, чтобы пользователи начали выставлять счета в тот момент, когда они заходят в чат, вы можете отправить почтовый запрос на свой сервер с указанием времени начала:
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);
Надеюсь помог, удачи!
person
songz
schedule
07.07.2014