背景:想要通过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可以帮你开个好头,不用像我一样走那么多弯路。