簡體   English   中英

我是否正確使用websockets?

[英]Am I using websockets correctly?

背景:

  • 我正在使用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數據從服務器端發送到推送器。

我認為Websockets比AJAX更具優勢,因為它速度更快,但在這里我發現自己被AJAX所束縛。

我在這里正確使用websockets嗎?

使用AJAX將請求發送到您的服務器,該請求又觸發一次Pusher事件,以便將其廣播給訂閱者,這是使用Pusher的一種慣用方式。 底層的WebSockets技術是雙向的(更多信息在這里 ),但推的pub / sub模型是單向的。

用例的一種替代方法是使用客戶端事件 這使您可以直接從客戶端觸發事件。 這樣做的額外注意事項是您必須使用私人或在線狀態渠道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM