Laravel通过Guzzel使用LeanCloud实现 实时通信

背景:想要通过php在LeanCloud上进行实时通信操作,却找不到指南,只能找到实时通信 REST API 使用指南 ,也就是说,我们需要发向服务器发请求。
推荐使用 guzzel 引入方法:http://guzzle.readthedocs.io/en/latest/overview.html

可以按照链接所示的方法,我使用的是

1、在composer.json 文件里添加

"require": {
    "guzzlehttp/guzzle": "~6.0"
}

2、然后在src目录下,命令行敲击 composer update

具体参考网址。
然后就可以开始使用了.
首先,你可以在你的.env文件中全局设置你的应用KEY
(在leanCloud注册账号-点击右上角-选择控制台-创建应用-应用设置-应用KEY)

LC_APP_ID=xxxxxx
LC_APP_KEY=xxxxxxxx
LC_APP_MASTER_KEY=xxxxxxx

设置好后,你就可以全局使用了,很方便。
Guzzel文档:http://guzzle.readthedocs.io/en/latest/request-options.html

创建会话:

curl -X POST \
-H “X-LC-Id: NeYR2VTdU9eESWRBeiJhXcjo-gzGzoHsz” \
-H “X-LC-Key: pWwNnm2TKu7qGGoQxBs21mi5” \
-H “Content-Type: application/json” \
-d ‘{“name”:”My Private Room”,”m”: [“SteveJobs”]}’ \
https://api.leancloud.cn/1.1/classes/_Conversation
我们可以看到leanCloud中的文档是这样的,对应的,如果我们需要发创建会话的请求,可以这样做

use GuzzleHttp\Client;//引入
$client = new Client();
$response = $client->request('POST', 'https://api.leancloud.cn/1.1/classes/_Conversation', [
    'headers' => [
        'X-LC-Id' => env('LC_APP_ID'),
        'X-LC-Key' => env('LC_APP_KEY'),
        'Content-Type' => "application/json"
    ],
    'json' => [
        'name'=> "My Private Room",
        'm' => ["SteveJobs"] //leanCloud支持一个人创建一个会话,当然也支持多人
    ]
]);

这样子就创建好一个会话啦!注意-d是用json的形式传过去哦,博主刚开始不是很懂怎么用,网上也找不到相关教程,在这里走了一些弯路。
返回的response是一个比较复杂的结构,而conversation_id在response->location里面,但它是一个类似于
https://api.leancloud.cn/1.1/classes/_Conversation/582e6dca67f356006339dedb
如果想要得到conversation_id,可以通过一些字符串的处理(substr(strrchr($response->getHeader(‘Location’)[0],’/’),1);)得到。
再举个添加成员的例子:

添加会话成员:

curl -X PUT \
-H “X-LC-Id: NeYR2VTdU9eESWRBeiJhXcjo-gzGzoHsz” \
-H “X-LC-Key: pWwNnm2TKu7qGGoQxBs21mi5” \
-H “Content-Type: application/json” \
-d ‘{“m”: {“__op”:”AddUnique”,”objects”:[“LarryPage”]}}’ \
https://api.leancloud.cn/1.1/classes/_Conversation/5552c0c6e4b0846760927d5a

use GuzzleHttp\Client;//引入
$conversation_id="5552c0c6e4b0846760927d5a"//以此为例
$client = new Client();
$response = $client->request('PUT', 'https://api.leancloud.cn/1.1/classes/_Conversation'.$conversation_id, [
    'headers' => [
        'X-LC-Id' => env('LC_APP_ID'),
        'X-LC-Key' => env('LC_APP_KEY'),
        'Content-Type' => "application/json"
    ],
    'json' => [
        'm' => [
            '__op' => "AddUnique",
            'm' => ["LarryPage"]
        ]      
    ]
]);

刚开始将两个文档对应可能会比较困难,网上也没有过多的解释,需要不断地尝试,但只要大概了解它是怎么对应起来,那么发guzzel请求应该就不会太难了。
实时通信 REST API 使用指南
Guzzel文档

希望本blog可以帮你开个好头,不用像我一样走那么多弯路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值