2016年1月2日 星期六

[分享]pusher

Pusher 是一個支援非同步推播功能的網路服務,支援Android、iOS、JavaScript

後台的支援亦相當多元,可以參考下圖。
























使用Push的架構為


Server(自己架) ----> Puser ------>接收推播的裝置。


如果只是想玩玩看的朋友,可以先去申請一個free account ,可以擁有的免費資源

,官網說明如下:

Our free Sandbox plan includes 100 connections, 200,000 messages, and unlimited channels.

也就是說你可以同時擁有最多100個連線數,20萬則的訊息,以及無限制的channel。


channel的定義就有點像群組的味道,例如我要發送給頻道A的朋友,

那麼註冊為頻道B的朋友就不會收到,即使都是同一個Pusher app 。

另一個要知道的名詞叫做event,一個channel下可以有多個event,

它的角色就像在一個channel中,可以引發不同的事件,例如client端

收到time_event時,去做更新時間,收到cost_event時要使用者付款,

這些event都是自己定義的動作,沒有任何的預先規範,event的名字也是

例如範例中用的都是test_channel , 以及my_event。


如果真的要商用,還是建議去買個付費帳號吧,不然100個connections一下子就用

用完了啦。


一進到到pusher主頁面,會看到你的appid 等相關資訊,以及前、後端範例程式
















































先來測一下JavaScript前端,把範例直接複制下來就可以用了,它己經把

你的app id 等資訊都直接代入範例中,1個Move就會RUN。



<!DOCTYPE html>
<head>
  <title>Pusher Test</title>
  <script src="https://js.pusher.com/3.0/pusher.min.js"></script>
  <script>
    // Enable pusher logging - don't include this in production
    Pusher.log = function(message) {
      if (window.console && window.console.log) {
        window.console.log(message);
      }
    };

    var pusher = new Pusher('my key', {
      encrypted: true
    });
    var channel = pusher.subscribe('test_channel');
    channel.bind('my_event', function(data) {
      alert(data.message);
    });
  </script>
</head>


啟動後,我們可以查看一下輸出的Debug訊息。










pusher的範例程式己成功和Puser服務連線成功,比較讓我注目的是這行

Pusher : Connecting : {"transport":"ws","url":"wss://ws.pusherapp.com:443/app/f8b77b790f72b38e8614?protocol=7&client=js&version=3.0.0&flash=false"}

看起來它走的是WebSocket,而不是傳統的Socket ,給它一個讚。


接下來我們來弄一下一個文件介面的後端,我們需要下載一下我們所需要的library




























它會告訴你lib是client或是Server用的,我這次要用python做後台,點擊連結後

轉到Github



告訴我應該怎麼安裝這個python lib












安裝過程



























接下來我可以開始使用pusher了, 執行一下以下python程式碼


import pusher

  p = pusher.Pusher(
  app_id='my app id',
  key='My Key',
  secret='my secret',
  ssl=True,
  port=443
)
p.trigger('test_channel', 'my_event', {'message': 'hello blogger boywhy'})

網頁就會跳出一個alert













如果只是想要快速測試一下前端的裝置或網頁是否有收到pusher訊息,

pusher網端有提供一個快速的方式,左邊的選單點擊Debug,即可

然候最右邊有一個可以指定Channel以及Event以及Data輸入框。



















讓我們來試一下,把channel以及event改成我們所設定的。

























最後按下Sent event,剛才的網頁一樣會收到pusher傳過來的推播訊息。

沒有留言:

張貼留言