Skip to content

信道服务

techirdliu edited this page Nov 20, 2016 · 8 revisions

微信小程序提供了 WebSocket 的通信能力,结合 Wafer 提供的信道服务,开发者可以迅速拥有实时双工的 WebSocket 通信能力。

信道服务共有三个模块参与协作进行通信:

  • 微信小程序客户端:需要 SDK 支持,可参考 Demo 实现
  • 业务服务器:需使用服务端 SDK,包括 JavaPHPC#Node 四个语言
  • 信道服务器:以 PaaS 服务的形式提供

信道服务通信大致有四个时序流程,分别是:建立连接、消息推送及断开连接。

建立连接

建立连接时序

建立连接是通信的第一步。

建立连接步骤如下:

  • 小程序客户端向信道服务器申请进行信道连接,如果已经登录,则会在请求头包含 idskey
  • 业务服务器收到申请请求后
    • 如果请求头包含 idskey,会通过会话服务获取用户信息 userInfo
    • 向信道服务器申请连接地址,并告知信道服务器后续对应的通信地址 receiverUrl
  • 信道服务器返回信道标识 tunnelId 和信道连接地址 connectUrl
  • 业务服务器调用信道处理器onTunnelRequest() 方法通知连接已请求
  • 业务服务器返回连接地址到客户端
  • 客户端使用连接地址进行 WebSocket 连接后建立起双工 TCP 连接
  • 信道服务器在建立连接后,会根据连接的 tunnelId 找到对应的 receiverUrl,通过该地址推送连接消息到业务服务器
  • 业务服务器调用信道处理器onTunnelConnect() 方法通知连接已建立

消息推送

消息推送

建立连接后,微信小程序客户端和信道服务器可以相互推送消息。由于信道服务器只作为通用的 PaaS 服务,其本身不对消息做处理,只是作为消息推送的搬运工,具体消息交由业务服务器处理。

断开连接

当连接断开或微信小程序客户端请求断开时,信道服务器会向业务服务器推送断开消息。

信道处理器


以下是信道服务通信的时序图:

信道服务通信时序图