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

来源:互联网 发布:sql server删除表 编辑:程序博客网 时间:2024/06/06 20:21

背景:想要通过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=xxxxxxLC_APP_KEY=xxxxxxxxLC_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