Javascript 我是否正确使用WebSocket?

Javascript 我是否正确使用WebSocket?,javascript,ajax,websocket,pusher,Javascript,Ajax,Websocket,Pusher,背景: 我正在使用来自Pusher的API 我正在使用PHP服务器端 我已经通过composer安装了Pusher包服务器端 我如何使用它 我正在制作一个由单个用户控制的幻灯片放映。如果我想让一个人为该页面上的所有人更改幻灯片,那么我将使用用户移动到的幻灯片编号进行AJAX调用 $('#nextCard').click(function(){ if ($('#card-' + (cardId + 1)).length != 0) { // if there is a next ca

背景:

  • 我正在使用来自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,
        });
    }
});
然后,在推送数据时调用的函数会影响更改

我的问题

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

我认为Websockets比AJAX更有优势,因为它速度更快,但在这里,我发现自己被AJAX束缚住了


那么我在这里正确使用WebSocket了吗?

使用AJAX向服务器发送请求,然后触发推送事件以向订阅者广播,这是一种惯用的推送方式。底层WebSocket技术是双向的(更多信息),但Pusher的发布/订阅模型是单向的


用例的一个备选方案是使用。这允许您直接从客户端触发事件。这样做的额外考虑是您必须使用私有或状态频道。

使用AJAX向服务器发送请求,然后触发推送事件以向订阅者广播,这是一种惯用的推送方式。底层WebSocket技术是双向的(更多信息),但Pusher的发布/订阅模型是单向的


用例的一个备选方案是使用。这允许您直接从客户端触发事件。这样做的额外考虑是,您必须使用私有或状态频道。

为什么不使用pusher而不是ajax来发送更新?如果您已经有到服务器的webSocket连接,那么您可以通过webSocket连接或ajax(您的选择)将数据发送到服务器。“Websockets是AJAX的替代品不完全是这样,它的主要优点是双向的,所以服务器可以向客户端发送消息。这意味着websocket连接可以重复地替换对服务器的AJAX请求,以获取最新状态。就我个人而言,即使我有一个打开的websocket连接,我仍然使用AJAX请求向我的HTTP API发送“一次”查询。有趣的是,我发现AJAX对于“一次”事件也更容易。为什么不使用pusher而不是AJAX来发出更新?如果您已经有到服务器的websocket连接,然后,您可以通过webSocket连接或Ajax(由您选择)向服务器发送数据。“webSocket是Ajax的替代品/替代品”不完全是这样,它的主要优势是双向的,因此服务器可以向客户端发送消息。这意味着websocket连接可以重复地替换对服务器的AJAX请求,以获取最新状态。就我个人而言,我仍然使用AJAX请求,即使我有一个打开的websocket连接,将“一次性”查询发送到我的HTTP API。有趣的是,我发现AJAX对于“一次性”事件也更容易。绝对正确!绝对成功!
var channel = pusher.subscribe('notifications');
channel.bind('new-notification', function(data) {

    // call something here

});