-
Notifications
You must be signed in to change notification settings - Fork 333
信道服务
techirdliu edited this page Nov 20, 2016
·
8 revisions
微信小程序提供了 WebSocket 的通信能力,结合 Wafer 提供的信道服务,开发者可以迅速拥有实时双工的 WebSocket 通信能力。
信道服务共有三个模块参与协作进行通信:
信道服务通信大致有四个时序流程,分别是:建立连接、消息推送及断开连接。
建立连接是通信的第一步。
建立连接步骤如下:
- 小程序客户端向信道服务器申请进行信道连接,如果已经登录,则会在请求头包含
id
和skey
- 业务服务器收到申请请求后
- 如果请求头包含
id
和skey
,会通过会话服务获取用户信息userInfo
- 向信道服务器申请连接地址,并告知信道服务器后续对应的通信地址
receiverUrl
- 如果请求头包含
- 信道服务器返回信道标识
tunnelId
和信道连接地址connectUrl
- 业务服务器调用信道处理器的
onTunnelRequest()
方法通知连接已请求 - 业务服务器返回连接地址到客户端
- 客户端使用连接地址进行 WebSocket 连接后建立起双工 TCP 连接
- 信道服务器在建立连接后,会根据连接的
tunnelId
找到对应的receiverUrl
,通过该地址推送连接消息到业务服务器 - 业务服务器调用信道处理器的
onTunnelConnect()
方法通知连接已建立
建立的 WebSocket 连接可以和会话关联,会话实现细节请参考会话服务
建立连接后,微信小程序客户端和信道服务器可以相互推送消息。由于信道服务器只作为通用的 PaaS 服务,其本身不对消息做处理,只是作为消息推送的搬运工,具体消息由业务服务器交给信道处理器进行处理。
当连接断开或微信小程序客户端请求断开时,信道服务器会向业务服务器推送断开消息。业务服务器也可以主动请求信道服务器断开与小程序的连接。
信道处理器是使用服务器 SDK 进行信道服务时需要提供的实例,用于处理信道事件,包括请求、连接、消息、断开。
-
onTunnelRequest()
- 当用户发起信道请求的时候,会得到用户信息,此时可以关联信道 ID 和用户信息 -
onTunnelConnect()
- 当用户建立了信道连接之后,可以记录下已经连接的信道 -
onTunnelMessage()
- 当用户消息发送到信道上时,使用该函数处理信道的消息 -
onTunnelClose()
- 当信道关闭时,清理关于该信道的信息,以及回收相关资源
[ 返回 Wiki 首页 ]
Wafer - 企业级微信小程序全栈方案
如果 Wiki 内容不能解决你的疑惑,欢迎提交 Issue 进行反馈或者加入 QQ 群(216602757)进行讨论