【发布时间】:2017-02-26 16:10:08
【问题描述】:
背景:
- 我正在使用 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 然后将幻灯片编号实时发送给同一页面上的所有用户...实际上 推送 更改到不同的人的屏幕。
var channel = pusher.subscribe('notifications');
channel.bind('new-notification', function(data) {
// call something here
});
然后,这些更改受数据推送时调用的函数的影响。
我的问题
我的印象是 Websockets 是 AJAX 和其他类似技术的替代品/替代品......但在这里我发现自己依靠 AJAX 将我的 Websockets 数据从服务器端发送到推送器。
我认为 Websockets 比 AJAX 更有优势,因为它更快,但在这里我发现自己受到 AJAX 的限制。
那么我在这里正确使用 websockets 了吗?
【问题讨论】:
-
为什么不使用 pusher 而不是 ajax 来发布更新?
-
如果您已经与服务器建立了 webSocket 连接,那么您可以通过 webSocket 连接或通过 Ajax(您的选择)向服务器发送数据。
-
"Websockets 是 AJAX 的替代品/替代品" 不完全是,它的主要优点是双向的,因此服务器可以向客户端发送消息。这意味着 websocket 连接可以重复地替换对服务器的 AJAX 请求以获取最新状态。就我个人而言,即使我有一个打开的 websocket 连接,我仍然使用 AJAX 请求来向我的 HTTP API 发送“一次性”查询。
-
有趣,我发现 ajax 对于“一次性”事件也更容易。
标签: javascript ajax websocket pusher