背景:
我如何使用
我正在构建一个由单个用户控制的幻灯片。如果我希望那个人为该页面上的所有人更改幻灯片,那么我使用用户移动到的数字幻灯片进行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吗?
答案 0 :(得分:2)
使用AJAX向您的服务器发送请求,而这些请求又会触发Pusher事件以便将其广播给订阅者,这是使用Pusher的惯用方法。底层WebSockets技术是双向的(更多信息here),但Pusher的发布/订阅模型是单向的。
您的用例的另一种选择是使用client events。这允许您直接从客户端触发事件。这样做的额外考虑因素是您必须使用私人或在线渠道。