tencentyun / wafer-php-server-sdk

Wafer - 企业级微信小程序全栈方案
https://github.com/tencentyun/wafer
Other
251 stars 64 forks source link

关于信道服务器,https://ws.qcloud.com #4

Open xzshinan opened 7 years ago

xzshinan commented 7 years ago

建立连接的时候,业务服务器 请求 信道服务器 https://ws.qcloud.com/get/wsurl

疑问1:信道服务器返回的值 其实是 数组。 TunnelService.php 第101行 进行了json_decode 操作。

疑问2:信道服务器返回的值中没有 signature。

kavil commented 6 years ago

+1

jas0ncn commented 6 years ago
  1. 你说的这个是因为 $packet 之前是 json,解析了之后才是数组。你可以看一下具体的代码执行顺序。

  2. 不知道是什么的 signature?

kavil commented 6 years ago

[2017-10-29 14:50:23][DEBUG] POST https://ws.qcloud.com/get/wsurl => [200] { "[请求]": { "data": "{\"receiveUrl\":\"https:\/\/vox-api.cn\/tunnel\",\"protocolType\":\"wss\"}", "tcId": "ffff613b6c46f44bfd6a7f04e58396ca", "tcKey": "abc-", "signature": "4f24a372798e8fad5c0ef8583412ac9ac3fd7735" }, "[响应]": { "code": 0, "message": "OK", "data": { "tunnelId": "02ca30d0-740a-4b02-9d74-6f5d7f78f3ec", "connectUrl": "wss:\/\/ws.qcloud.com\/ws\/test?tunnelId=02ca30d0-740a-4b02-9d74-6f5d7f78f3ec" } }, "[耗时]": "73ms" }

这是日志,没有返回signature

jas0ncn commented 6 years ago

这个签名只是用来校验数据的,不是给信道用的。直接连接信道即可。

kavil commented 6 years ago

image 但是sdk里TunnelService.php82行拿不到会报错[捂脸]

jas0ncn commented 6 years ago

不是的,这个地方是可以拿到的。。

整个流程是这样的:

-------            -------------            -----------
| 用户 |    ->    | 业务服务器 |    ->    | 信道服务 |
|         |    <-    |                    |    <-    |                |
------             -------------             -----------

你截图的那个信道服务器不是我们小程序专用的,报错是因为你的 sdk.config 配置错误了。。要把 https://ws.qcloud.com/ 修改为 https://tunnul.ws.qcloud.la/