我正确使用websockets吗?

时间:2017-02-26 16:10:09

标签: javascript ajax websocket pusher

背景:

  • 我正在使用Pusher的API。
  • 我正在使用PHP服务器端。
  • 我已经通过composer安装了Pusher包服务器端。

我如何使用

我正在构建一个由单个用户控制的幻灯片。如果我希望那个人为该页面上的所有人更改幻灯片,那么我使用用户移动到的数字幻灯片进行AJAX调用。

$('#nextCard').click(function(){
    if ($('#card-' + (cardId + 1)).length != 0) {  // if there is a next card
        $('#card-' + (cardId)).hide();             // hide current card
        cardId++;                                  // increment the card id
        $('#card-' + (cardId)).show();             // and show the next card
        location.hash = cardId;

        /**
         * make ajax call to push function
         */
        $.ajax({
            method: 'post',
            url: '<?php echo base_url('learn/pusher'); ?>',
            data: {card_id: cardId},
            dataType: 'json',
            async: false,
        });
    }
});

这个号码通过ajax发送到服务器,然后通过pusher传送。

Pusher然后将幻灯片编号实时发送给同一页面上的所有用户...实际上更改推送到不同的人群屏幕。

var channel = pusher.subscribe('notifications');
channel.bind('new-notification', function(data) {

    // call something here

});

然后,更改受到按下数据时调用的函数的影响。

我的问题

我的印象是Websockets是AJAX和其他类似技术的替代/替代......但在这里我发现自己依靠AJAX将我的Websockets数据从服务器端发送到pusher。

我认为Websockets比AJAX更有优势,因为它更快,但在这里我发现自己被AJAX瓶颈了。

我在这里正确使用websockets吗?

1 个答案:

答案 0 :(得分:2)

使用AJAX向您的服务器发送请求,而这些请求又会触发Pusher事件以便将其广播给订阅者,这是使用Pusher的惯用方法。底层WebSockets技术是双向的(更多信息here),但Pusher的发布/订阅模型是单向的。

您的用例的另一种选择是使用client events。这允许您直接从客户端触发事件。这样做的额外考虑因素是您必须使用私人或在线渠道。