Giter Club home page Giter Club logo

wafer-php-server-sdk's Introduction

Wafer 服务端 SDK - PHP

Latest Stable Version Minimum PHP Version Build Status Coverage Status License

本项目是 Wafer 组成部分,以 SDK 的形式为业务服务器提供以下服务:

安装

  • 方法一(推荐):使用 PHP 包依赖管理工具 composer 执行以下命令安装
composer require qcloud/weapp-sdk
  • 方法二: 直接下载本仓库 ZIP 包解压到项目目录中

API

参见 API 文档

使用

加载 SDK

// 方法一:使用 composer 加载
require_once 'path/to/vendor/autoload.php';

// 方法二:不使用 composer 加载
require_once 'path/to/qcloud/weapp-sdk/AutoLoader.php';

初始化 SDK 配置项

use \QCloud_WeApp_SDK\Conf;

Config::setup(array(
    'ServerHost' => '业务服务器的主机名',
    'AuthServerUrl' => '鉴权服务器服务地址',
    'TunnelServerUrl' => '信道服务器服务地址',
    'TunnelSignatureKey' => '和信道服务器通信的签名密钥',
));

关于 SDK 配置字段的含义以及配置文件格式的更多信息,请参考服务端 SDK 配置

使用会话服务

处理用户登录请求

业务服务器提供一个路由(如 /login)处理客户端的登录请求,直接使用 SDK 的 LoginService::login() 方法即可完成登录处理。登录成功后,可以获取用户信息。

use \QCloud_WeApp_SDK\Auth\LoginService;

$result = LoginService::login();

if ($result['code'] === 0) {
    // 微信用户信息:`$result['data']['userInfo']`
} else {
    // 登录失败原因:`$result['message']`
}

检查请求登录态

客户端交给业务服务器的请求,业务服务器可以通过 SDK 的 LoginService::check() 方法来检查该请求是否包含合法的会话。如果包含,则会返回会话对应的用户信息。

use \QCloud_WeApp_SDK\Auth\LoginService;

$result = LoginService::check();

if ($result['code'] !== 0) {
    // 登录态失败原因:`$result['message']`
    return;
}

// 使用微信用户信息(`$result['data']['userInfo']`)处理其它业务逻辑
// ...

阅读 Wafer Wiki 文档中的会话服务了解更多关于会话服务的技术资料。

使用信道服务

业务在一个路由上(如 /tunnel)提供信道服务,只需把该路由上的请求都交给 SDK 的信道服务处理即可。

use \QCloud_WeApp_SDK\Tunnel\TunnelService;
use \QCloud_WeApp_SDK\Tunnel\ITunnelHandler;

class TunnelHandler implements ITunnelHandler {
    // TODO: 实现 onRequest 方法,处理信道连接请求
    public function onRequest($tunnelId, $userInfo) {

    }

    // TODO: 实现 onConnect 方法,处理信道连接事件
    public function onConnect($tunnelId) {

    }

    // TODO: 实现 onMessage 方法,处理信道消息
    public function onMessage($tunnelId, $type, $content) {

    }

    // TODO: 实现 onClose 方法,处理信道关闭事件
    public function onClose($tunnelId) {

    }
}

$handler = new TunnelHandler();
TunnelService::handle($handler, array('checkLogin' => TRUE));

使用信道服务需要实现处理器,来获取处理信道的各种事件,具体可参考接口 ITunnelHandler 的 API 文档以及配套 Demo 中的 ChatTunnelHandler 的实现。

阅读 Wafer Wiki 中的信道服务了解更多解决方案中关于信道服务的技术资料。

详细示例

参见项目:Wafer 服务端 DEMO - PHP

LICENSE

MIT

wafer-php-server-sdk's People

Contributors

miusuncle avatar techird avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.