PHP 基于websocket的前台及后台实时推送

 PHP websocket实时消息推送
 
实现步骤如下:
1.        获取GoEasy appkey.
在goeasy官网上注册一个账号,并新建一个app. APP创建好后系统会为该app自动生成两个key, 一个既可以用来接收又可以用来推送 (common key),另一个只可以用来接收(subscriber key).
2.        客户端订阅一个channel.
a.        在客户端引入goeasy.js, js地址:http://cdn.goeasy.io/goeasy-2.13.2.min.js
需要注意的是,不能将goeasy.js下载到本地,因为goeasy会根据不同浏览器来提供不同的js. 官网上也有相应说明。
b.        订阅代码
var pubsub = goeasy.pubsub;
pubsub.subscribe({
    channel: "my_channel",//替换为您自己的channel
    onMessage: function (message) {
        //收到消息
        console.log("Channel:" + message.channel + " content:" + message.content);
    },
    onSuccess: function () {
        console.log("Channel订阅成功。");
    },
    onFailed: function (error) {
        console.log("Channel订阅失败, 错误编码:" + error.code + " 错误信息:" + error.content)
    }
});

3.        前台推送及后台推送
3.1.   前台往相同channel上推送
pubsub.publish({
    channel: "my_channel",//替换为您自己的channel
    message: "Hello GoEasy!",//替换为您想要发送的消息内容
    onSuccess:function(){
        console.log("消息发布成功。");
    },
    onFailed: function (error) {
        console.log("消息发送失败,错误编码:"+error.code+" 错误信息:"+error.content);
    }
});
3.2.   后台往相同channel上推送. 用GoEasy提供的restful API实现
<?php
// 新加坡rest-host:rest-singapore.goeasy.io
$url = "https://rest-hz.goeasy.io/v2/pubsub/publish";

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$headers = array(
   "Accept: application/json",
   "Content-Type: application/json",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

$data = <<<DATA
{
  "appkey": "您的appkey",
  "channel": "test_channel",
  "content": "Hello, GoEasy!"
}
DATA;

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$resp = curl_exec($curl);
curl_close($curl);
var_dump($resp);
?>

希望对大家有帮助。
posted @ 2017-02-13 11:23  EmmaMao  阅读(767)  评论(0编辑  收藏  举报