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包服务器端
$('#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
});