检查Pusher中是否在所有通道中触发了事件

时间:2014-01-29 11:41:44

标签: javascript php timer pusher

我正在使用Php和Pusher建立实时出价网站。网站上有一个倒数计时器。

如果计时器低于15秒并且有人竞标拍卖,则计时器将再次重置为15。我正在使用Pusher在所有打开的浏览器中更新计时器。当计时器达到0时,将调用一个函数来结束拍卖。

这是我面临的问题:

如果有人在计时器大约1秒左右时出价,则计时器会在出价的浏览器中更新。但是,当Pusher花了一秒钟来更新其他浏览器时,计时器在其他计算机上结束,并且调用结束拍卖的功能。

以下是我目前正在做的示例代码:

    var pusher = new Pusher('key');

    channel = pusher.subscribe('wppa');

    pusher.connection.bind('connected', function(){

    });

    channel.bind('bid_added_event', function(response) {
        StreamedAuction.update(response, AuctionModel); 
    });

    channel.bind('end_auction_event', function(response) {
        StreamedAuction.end(response, AuctionModel);
    });

    channel.bind('update_timer_event', function(response){
        StreamedAuction.updateEndDate(response, AuctionModel);
    });

如果有人出价并且计时器小于15 updat_timer_event,则会调用所有频道更新计时器。

如果计时器达到0,则调用end auction_event。问题是,如果有人在计时器为1秒时出价,则即使在调用update_timer_event之前拍卖也会结束。

我想知道如果事件在所有频道中被触发,你是否可以在pusher中监听。如果这是可能的,我认为我可以做类似的事情:

if the event is fired in all browsers
   then end the auction
else
   reset the counter to 15 in all channels
   as somebody bided and the auction ending event wasnt fired from
   one of the channel

如果您需要更多详细信息或代码,请与我们联系。

感谢。

0 个答案:

没有答案