1. 程式人生 > >PHP 用Goeasy實現即時通訊

PHP 用Goeasy實現即時通訊

應大佬所需,最近一直在忙著升級新的手機版。

專案期間要寫一個線上客服,最初接到需求的時候,將收發訊息存入資料庫做個輪詢。寫到一半的時候突然發現,太尼瑪坑爹,慢的一B不說,還挺佔用伺服器資源,人一多,聊天體驗極差。遂放棄,四處找了下相關外掛,發現這些外掛要麼收費,要麼就是獨立的後臺,不符合專案需求。最後又耐心性子看了一天的Workerman,第二天放棄了,socket 要想三兩天就上手感覺太不切實際。最後發現了GOeasy!!!

GOeasy的使用非常簡單!

首先去官方註冊一個賬號並建立一個專案!你會得到兩個KEY值,一個只能用來接收訊息,另一個可以收發訊息!後臺的demo目前官方只有java的,但是收發訊息全部可以用Javascript搞定~ 只用引用一個外部的js包就好。

<script type="text/javascript" src="http://cdn.goeasy.io/goeasy.js"></script> 

接下來說一下接收訊息

<script>
     var goEasy = new GoEasy(
{'你申請key值'});
        goEasy. subscribe({
             channel: '你自己建立的專案',
             onMessage: function(message){
                    if(message){
                        console.log(message);
                        var xiaoxi = message.content.match(/&(.*?)\$/);
                        var username = xiaoxi[1];
                        if(username!='管理員'){
                            $(".qq-exe").addClass('qq-new-m');
                        }
                    }
                    // alert('Meessage received:'+message.content);//接收到推送的訊息
            }
        });
</script>

subscribe用來接收訊息。需要注意的事,GOeasy是推送,也就是說你想GOeasy傳送一條訊息後,它也會像你自己推送。所以如果

做聊天的話,我們一定要自己處理一下資料。我簡單測試了一下發現,免費版的好像只能傳送字串。所以資料一定要處理!

接下來是傳送訊息(↓)

 goEasy.publish({
                    channel: "你自己的專案名稱",
                    message: "#" + ner + "&管理員$" + fa_id + "!!",
                    onSuccess: function(message) {
                        //    console.log(message)
                    },
                    onFailed: function(error) {
                        alert("訊息傳送失敗,錯誤編碼:" + error.code + " 錯誤資訊:" + error.content);
                    }
                })

用“#&$!!”是為了拼接使用者ID和使用者名稱,好做處理。可以按照自己設定的規則去進行傳送。訊息傳送成功後可以根據自己專案的業務邏輯去進行入庫或者快取處理。這裡就不多BB了。

如果是後臺傳送訊息的話,只需向下面固定的地址傳送post請求。如下面的例子所示

$url = 'http://rest-hangzhou.goeasy.io:80/publish';

public function ceshi($url){
        //請求地址
        $uri = $url;
        // 引數陣列
        $data = array(
            'appkey'  => "BC-6942c75ef1ab4ef49ffbb40313d92c40",
            'channel' => "你自己的專案地址",
            'content' => "你好啊"
        );
        $ch = curl_init ();
        curl_setopt ( $ch, CURLOPT_URL, $uri);//地址
        curl_setopt ( $ch, CURLOPT_POST, 1 );//請求方式為post
        curl_setopt ( $ch, CURLOPT_HEADER, 0 );//不列印header資訊
        curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );//返回結果轉成字串
        curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );//post傳輸的資料。
        $return = curl_exec ( $ch );
        curl_close ( $ch );
   }

如果發現傳送失敗,請答應header頭檢視原因~

簡單的聊天就這樣搞定啦~ 話說回來,如果專案對即時通訊需求大的話還是特孃的用第三方吧。

搞定  下班~ 下班~~