# 微信小程序客户端腾讯云增强 SDK

[![Build Status](https://travis-ci.org/tencentyun/wafer-client-sdk.svg?branch=master)](https://travis-ci.org/tencentyun/wafer-client-sdk)

[![Coverage Status](https://coveralls.io/repos/github/tencentyun/wafer-client-sdk/badge.svg?branch=master)](https://coveralls.io/github/tencentyun/wafer-client-sdk?branch=master)

[![License](https://img.shields.io/github/license/tencentyun/wafer-client-sdk.svg)](LICENSE)

本 项目是 [Wafer](https://github.com/tencentyun/wafer-solution) 的组成部分,为小程序客户端开发提供 SDK 支持会话服务和信道服务。

## SDK 获取与安装

解决方案[客户端 Demo](https://github.com/tencentyun/wafer-client-demo) 已经集成并使用最新版的 SDK,需要快速了解的可以从 Demo 开始。

如果需要单独开始,本 SDK 已经发布为 bower 模块,可以直接安装到小程序目录中。

```sh

npm install-g bower

bower install qcloud-weapp-client-sdk

```

安装之后,就可以使用 `require` 引用 SDK 模块:

```jsvar qcloud = require('./bower_components/qcloud-weapp-client-sdk/index.js');

```

## 会话服务

[会话服务](https://github.com/tencentyun/wafer-solution/wiki/%E4%BC%9A%E8%AF%9D%E6%9C%8D%E5%8A%A1)让小程序拥有会话管理能力。

### 登录

登录可以在小程序和服务器之间建立会话,服务器由此可以获取到用户的标识和信息。

```jsvar qcloud = require('./bower_components/qcloud-weapp-client-sdk/index.js');//设置登录地址

qcloud.setLoginUrl('https://199447.qcloud.la/login');

qcloud.login({

success: function (userInfo) {

console.log('登录成功', userInfo);

},

fail: function (err) {

console.log('登录失败', err);

}

});

```

本 SDK 需要配合云端 SDK 才能提供完整会话服务。通过 [setLoginUrl](#setLoginUrl) 设置登录地址,云服务器在该地址上使用云端 SDK 处理登录请求。>`setLoginUrl` 方法设置登录地址之后会一直有效,因此你可以在微信小程序启动时设置。

登录成功后,可以获取到当前微信用户的基本信息。

### 请求

如果希望小程序的网络请求包含会话,登录之后使用 [request](#request) 方法进行网络请求即可。

```js

qcloud.request({

url:'http://199447.qcloud.la/user',

success: function (response) {

console.log(response);

},

fail: function (err) {

console.log(err);

}

});

```

如果调用 `request` 之前还没有登录,则请求不会带有会话。`request` 方法也支持 `login` 参数支持在请求之前自动登录。

```js//使用 login 参数之前,需要设置登录地址

qcloud.setLoginUrl('https://199447.qcloud.la/login');

qcloud.request({

login:true,

url:'http://199447.qcloud.la/user',

success: function (response) {

console.log(response);

},

fail: function (err) {

console.log(err);

}

});

```

关于会话服务详细技术说明,请参考 [Wiki](https://github.com/tencentyun/wafer-solution/wiki/%E4%BC%9A%E8%AF%9D%E6%9C%8D%E5%8A%A1)。

## 信道服务

[信道服务](https://github.com/tencentyun/wafer-solution/wiki/%E4%BF%A1%E9%81%93%E6%9C%8D%E5%8A%A1)小程序支持利用腾讯云的信道资源使用 WebSocket 服务。

```js//创建信道,需要给定后台服务地址

var tunnel = this.tunnel = new qcloud.Tunnel('https://199447.qcloud.la/tunnel');//监听信道内置消息,包括 connect/close/reconnecting/reconnect/error

tunnel.on('connect', () => console.log('WebSocket 信道已连接'));

tunnel.on('close', () => console.log('WebSocket 信道已断开'));

tunnel.on('reconnecting', () => console.log('WebSocket 信道正在重连...'));

tunnel.on('reconnect', () => console.log('WebSocket 信道重连成功'));

tunnel.on('error', error => console.error('信道发生错误:', error));//监听自定义消息(服务器进行推送)

tunnel.on('speak', speak => console.log('收到 speak 消息:', speak));//打开信道

tunnel.open();//发送消息

tunnel.emit('speak', { word: "hello", who: { nickName: "techird"}});//关闭信道

tunnel.close();

```

信道服务同样需要业务服务器配合云端 SDK 支持,构造信道实例的时候需要提供业务服务器提供的信道服务地址。通过监听信道消息以及自定义消息来通过信道实现业务。

关于信道使用的更完整实例,建议参考客户端 Demo 中的[三木聊天室应用源码](https://github.com/tencentyun/wafer-client-demo/blob/master/pages/chat/chat.js)。

关于信道服务详细技术说明,请参考 [Wiki](https://github.com/tencentyun/wafer-solution/wiki/%E4%BF%A1%E9%81%93%E6%9C%8D%E5%8A%A1)。

## API

### setLoginUrl

设置会话服务登录地址。

#### 语法

```js

qcloud.setLoginUrl(loginUrl);

```

#### 参数|参数         |类型 |说明|-------------|---------------|--------------

|loginUrl |string |会话服务登录地址

### login

登录,建立微信小程序会话。

#### 语法

```js

qcloud.login(options);

```

#### 参数|参数         |类型 |说明|-------------|---------------|--------------

|options     |PlainObject   |会话服务登录地址|options.success | () => void |登录成功的回调|options.error | (error) => void |登录失败的回调

### request

进行带会话的请求。

#### 语法

```js

qcloud.request(options);

```

#### 参数|参数         |类型 |说明|-------------|---------------|--------------

|options     |PlainObject   |会话服务登录地址|options.login | bool         | 是否自动登录以获取会话,默认为 false

|options.url   | string       |必填,要请求的地址|options.header | PlainObject |请求头设置,不允许设置 Referer|options.method | string     |请求的方法,默认为 GET|options.success | (response) => void | 登录成功的回调。

  • `response.statusCode`:请求返回的状态码
  • `response.data`:请求返回的数据

|options.error | (error) => void |登录失败的回调|options.complete | () => void |登录完成后回调,无论成功还是失败

### Tunnel

表示一个信道。由于小程序的限制,同一时间只能有一个打开的信道。

#### constructor

##### 语法

```jsvar tunnel = newTunnel(tunnelUrl);

```

#### 参数|参数         |类型 |说明|-------------|---------------|--------------

|tunnelUrl   |String   |会话服务登录地址

#### on

监听信道上的事件。信道上事件包括系统事件和服务器推送消息。

##### 语法

```js

tunnel.on(type, listener);

```

##### 参数|参数         |类型 |说明|-------------|---------------|--------------

|type       |string     |监听的事件类型|listener     |(message?: any) => void |监听器,具体类型的事件发生时调用监听器。如果是消息,则会有消息内容。

##### 事件|事件 |说明|-------------|-------------------------------

|connect |信道连接成功后回调|close |信道关闭后回调|reconnecting |信道发生重连时回调|reconnected |信道重连成功后回调|error |信道发生错误后回调|[message]   |信道服务器推送过来的消息类型,如果消息类型和上面内置的时间类型冲突,需要在监听的时候在消息类型前加 `@`|\*           |监听所有事件和消息,监听器第一个参数接收到时间或消息类型

#### open

打开信道,建立连接。由于小程序的限制,同一时间只能有一个打开的信道。

##### 语法

```js

tunnel.open();

```

#### emit

向信道推送消息。

##### 语法

```js

tunnel.emit(type, content);

```

##### 参数|参数         |类型 |说明|-------------|---------------|--------------

|type       |string       |要推送的消息的类型|content |any |要推送的消息的内容

#### close

关闭信道

##### 语法

```js

tunnel.close();

```

## LICENSE

[MIT](LICENSE)

demo解析 小程序node.js_小程序-demo:小程序示例相关推荐

  1. demo解析 小程序node.js_小程序DEMO——金斧子(含node后端)

    项目路径对照 微信小程序 /app 开发文档 /doc Node服务端 /node Node 服务端 本机开发步骤: npm install 安装依赖包: 运行grunt启动项目,自动打包了 watc ...

  2. 基于微信小程序开发的仿微信demo

    (本文参考自github/liujians,地址:https://github.com/liujians/weApp) 作者声明: 基于微信小程序开发的仿微信demo  整合了ionic的样式库和we ...

  3. 【非常基础实践】 微信小程序 - 腾讯云 - PHP - DEMO - 002 - 云环境搭建和开通指引- 实践

    前言: 微信小程序最快捷的方式应该还是利用腾讯云做后台,本文对开启微信小程序和腾讯云的绑定实践了一下. 包括安装,开通,开发环境配置,生产环境配置.很大一部分内容来自官网 1 注册微信小程序(官网贴图 ...

  4. 微信小程序实例源码大全demo下载

    怎么本地测试微信小程序实例源码 1.下载源码 2.打开微信开发者工具 3.添加项目->选择本项目目录->编译执行 微信小程序实例源码大全 微信小程序游戏类demo:识色:从相似颜色中挑选不 ...

  5. node.js基于微信小程序的外卖订餐系统 uniapp 小程序

    美食是人类永恒的话题,无论是在古代还是现代人们对美食都有一种非常的热爱在里面,但是随着时代的发展,人们可能没有更多的时间去研究美食,很多时候人们在下班或者放学之后更希望通过网络来进行订餐,为此我开发了 ...

  6. node.js云学堂微信小程序学习系统的设计与实现毕业设计源码011735

    Node.js云学堂微信小程序 摘要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课 ...

  7. 教辅小程序之微课页面Demo

    教辅小程序之微课页面Demo 源代码下载https://download.csdn.net/download/lujiebin/11241027 1.近做毕设的微信小程序,下面是我的微课页面的Demo ...

  8. [解读小程序]手机归属地查询Demo(四)

    [解读小程序]手机归属地查询Demo(四) 分析的程序来源: http://blog.csdn.net/y1258429182/article/details/52666290 下载链接:http:/ ...

  9. 一起脱去小程序的外套和内衣 - 微信小程序架构解析

    推荐理由: 微信小程序从一出现就引起很多人的关注,它的公测就掀起了学习小程序开发的浪潮:今天在微信公众平台看到一条公告,小程序开始开放个人开发者申请注册,个人用户可以访问微信公众平台,扫码验证个人身份 ...

最新文章

  1. 利用Redis进行全页面缓存的简单Demo
  2. 主成分分析(PCA)——以2维图像为例
  3. ACM竞赛学习整理开篇之01背包问题
  4. 【转】BPM与ERP,OA系统的区别和关系
  5. 数据结构--位图 BitMap
  6. 信息学奥赛C++语言: 商品排序
  7. 庞特里亚金最小值原理求解能耗最小化的时间最优OBVP问题
  8. 登陆注册重连 之 老掉牙的故事 新说法
  9. (C++)wchar_t 转 string / TCHAR转为char/判断是否进程运行/获得目标进程的入口
  10. php点击导入选择文件,关于怎么选定一个文件并打开的有关问题
  11. 矩形液体包装纸箱行业调研报告 - 市场现状分析与发展前景预测
  12. 微软按月收费桌面计划,Win 10 将变成 Win 365?
  13. 《FilthyRichClients》读书笔记(一)-SwingのEDT
  14. 如何在官网下载java JDK
  15. 下载网站TS格式文件进行合并
  16. 传统企业如何面对电子商务的发展
  17. SQL使用(一)-----联合查询
  18. 共享打印机提示服务器没有运行,提示无法共享打印机: “无法显示该属性,后台打印程序服务未运行”...
  19. DRBD配置文件参数解析
  20. vue.js3D立方体旋转播放特效

热门文章

  1. hdu1501 dp:两个字符串能否组成新串,状态表示能,不能。
  2. 关于PHP5.3作废函数的处理方法
  3. Mongoose源码剖析:外篇之web服务器
  4. vue 封装dialog_element-ui 封装dialog组件
  5. java查看sql视图_数据库的查询与视图
  6. python写http文件下载器_http分片请求-python分片下载文件
  7. python数据笔记分析_利用 Python 进行数据分析学习笔记(一)
  8. 用C语言编程实现矩形波信号,信号与系统综合设计性实验
  9. matlab fminimax 多变量,Matlab应用实例(8)—fminimax
  10. gis快速接地开关_一种基于扫描电镜和能谱仪的GIS放电异物来源分析方法