實時通信 | pusher 入門教程(一)

介紹

實時通信是Web開發的聖盃,由於有了Web Sockets API,我們終於能夠將其整合到我們的應用程序中。 但是,與大多數瀏覽器API一樣,Web Sockets API的級別也很低,如果您花了很多時間使用它,那麼您就會知道有效使用它會有多麼困難。

但是,今天,我們口袋裏有超級計算機,每天都可以使用,而且用戶希望在Web,移動設備甚至臺式機上都能獲得相同的實時體驗。 在本系列中,您將學習Channels ,該平臺可讓您爲用戶提供所需的無縫實時體驗。

入門參考

場景:

1、JavaScript 作爲客戶端訂閱頻道

2、PHP 作爲服務端發佈消息到頻道

(1)在客戶端訂閱事件

創建賬號

創建一個帳戶,然後創建一個 Channels 應用程序。轉到該應用程序的“密鑰”頁面,並記下您的 app_id、密鑰、密鑰和集羣。

下載頻道客戶端

在您的頁面上包含 pusher-js 腳本標籤。

<script src="https://js.pusher.com/7.0.3/pusher.min.js"></script>

打開與頻道的連接  

使用您之前記下的密鑰和集羣打開與 Channels 的連接。

var pusher = new Pusher("APP_KEY", {
  cluster: "APP_CLUSTER",
});

訂閱頻道

您將很快將一個事件發佈到一個名爲 my-channel 的頻道,並且您的 Web 應用程序將收到此事件。但要接收此事件,您的 Web 應用首先需要訂閱 my-channel 頻道。使用 pusher.subscribe 執行此操作:

var channel = pusher.subscribe("my-channel");

監聽頻道上的事件

每個發佈的事件都有一個“事件名稱”。 您將發佈的事件將具有事件名稱 my-event。 爲了讓您的 Web 應用程序在收到名爲 my-event 的事件時執行某些操作,您的 Web 應用程序必須首先將一個函數“bind”到此事件名稱。 使用通道的綁定方法執行此操作:

channel.bind("my-event", (data) => {
  // Method to be dispatched on trigger.
});

最後完整的代碼

<!DOCTYPE html>
<head>
  <title>Pusher Test</title>
  <script src="https://js.pusher.com/7.0/pusher.min.js"></script>
  <script>

    // Enable pusher logging - don't include this in production
    Pusher.logToConsole = true;

    var pusher = new Pusher('108365f54d1d934e7678', {
      cluster: 'ap3'
    });

    var channel = pusher.subscribe('my-channel');
    channel.bind('my-event', function(data) {
      alert(JSON.stringify(data));
    });
  </script>
</head>
<body>
  <h1>Pusher Test</h1>
  <p>
    Try publishing an event to channel <code>my-channel</code>
    with event name <code>my-event</code>.
  </p>
</body>

(2)從服務器發佈事件

使用下面的服務器代碼向您訂閱的客戶端發佈一個事件,您打開的任何(和所有)客戶端都會收到該事件,包括此頁面。

安裝服務端SDK

composer require pusher/pusher-php-server

目錄結構

參考僞代碼 server.php

<?php
/**
 * @desc pusher server
 * @author Tinywan(ShaoBo Wan)
 * @date 2022/01/29 23:02
 */
require_once '../../vendor/autoload.php';

$options = array(
    'cluster' => 'ap3',
    'useTLS' => true
);
$pusher = new Pusher\Pusher(
    '108365f54d1d934e7678',
    '9cfbfd3b06290c427de6',
    '1339434',
    $options
);

$data['message'] = 'hello world Tinywan';
$pusher->trigger('my-channel', 'my-event', $data);

運行以上腳本代碼

  

客戶端彈框提示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章