Xiqincai

导航

PHP基于websocket实时通信的实现—GoEasy

PHP websocket实时消息推送
在这里我记录一下之前如何实现服务器端与客户端实时通信:
实现步骤如下:
1.        获取GoEasy appkey.
在goeasy官网上注册一个账号,并新建一个app. APP创建好后系统会为该app自动生成两个key, 一个既可以用来接收又可以用来推送 (common key),另一个只可以用来接收(subscriber key).
2.        客户端订阅一个channel.
a.        在客户端引入goeasy.js, js地址:https://cdn.goeasy.io/goeasy-2.13.2.min.js
需要注意的是,不能将goeasy-2.13.2.min.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.        后台往相同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 on 2016-12-09 12:15  Xiqincai  阅读(1021)  评论(0编辑  收藏  举报