开发 | 如何在小程序里搭建客服系统?

文 | huazai123

知晓程序(微信号 zxcx0101)今天带来的,是基于「药顾问」微信小程序项目的 socket 客服模块搭建过程。

环境准备

1. 搭建 HTTPS 和 WSS 环境

由于微信规定,白名单域名不能携带端口信息,我们建议,开发者使用 NginX 进行代理转发,使其支持微信白名单域名的要求。

2. 定义前后端通信 JSON 协议

其中,token 是用来验证消息来源合法性的,fd 为当前 socket 连接资源 ID,from 为对方 socket 连接资源 ID,cmd 用于定义当前操作。

聊天系统搭建

1. 服务端

采用 TP5 和 swoole 扩展,并新建了一个 socket 模块,用于处理 socket 请求。

目录结构如下:

分为服务端 server.php 和客户端 client.php,服务端以 cli 形式运行。具体代码请参考 swoole 源码包中的 SSL 样例。

运行命令如下(先切换到服务器程序代码的public目录 ):

客户端其实是一个 web 端的 websocket,源码包中同样有提供样例,可供大家参考。

2. 小程序端

我们需要简单封装微信提供的 socket 接口,用于处理连接成功、发送消息、连接失败自动重连等操作。

目录结构如下:

发送方法封装参考:

3. 提升 cli 程序稳定性

编写 shell 脚本如下:

启用 crontab:

加入两行:

注意事项

如果使用 TP5 的帮助函数模块出现下面的错误,是数据库连接过期导致。

建议大家将连接过期时间设置得更长,但即使这样,总有过期的时候。所以我们推荐使用 MongoDB。

另外,微信小程序真机环境不予许指定端口,那上面的服务器配置就没有什么用,解决办法是:停用 Apache 的 SSL 模块,改用 NginX 作为反向代理。

如果要用 NginX 作为反向代理,会遇到会话过期的问题。我们有两个解决办法:

  • 设置代理超时时间为一个很长的时间。
  • 一个是客户端做个心跳检测(即定时向服务器发送一条信息)。

这两种办法都会增加服务器的负担,大家可以根据自己情况进行选择,我们建议采用后一种方法。

原文地址:

http://www.jianshu.com/p/26479d3892ac

原文发布于微信公众号 - 知晓程序(zxcx0101)

原文发表时间:2017-04-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏魏艾斯博客www.vpsss.net

如何修改 Cent OS 默认 SSH 端口

5563
来自专栏pangguoming

Windows 8 IIS配置PHP运行环境

在Windows 8 的IIS(8.0)中搭建PHP运行环境: 一:安装IIS服务器 1.进入控制面板>>程序和功能>>打开或关闭Windows 功能,找到In...

6958
来自专栏CDA数据分析师

Python第三方库安装和卸载

系统:Windows 7 版本:Python 3.5 Python是一门简洁、优雅的语言,丰富的第三方库能让我们很多的编程任务变得更加简单。对于想要用Pyth...

7657
来自专栏吴柯的运维笔记

memcached数据库环境部署及应用

前言: 三大传统数据库:mysql,sqlserver,oracle 【sql数据库-存硬盘-慢】 新兴数据库:mogodb,memcached,redis ...

2785
来自专栏电光石火

在Win7的IIS上搭建FTP服务及用户授权

FTP服务      FTP是文件传输协议(File Transfer Protocol)的简称,该协议属于应用层协议(端口号通常为21),用于Intern...

4949
来自专栏技术支持log

linux操作系统无损升级文件系统ext3至ext4--系统盘篇

linux操作系统无损升级文件系统ext3至ext4: 这里我们以CentOS7.0操作系统来作为示例升级系统盘文件系统: 附:linux操作系统无损升级文...

4111
来自专栏云计算教程系列

如何在Debian 9上安装Node.js.

Node.js是一个用于通用编程的JavaScript平台,允许用户快速构建网络应用程序。通过在前端和后端利用JavaScript,Node.js使开发更加一致...

5714
来自专栏惨绿少年

企业级LNMP架构搭建实例(基于Centos6.x)

1.1 部署LNMP架构说明 1.1.1 LNMP架构内容   01.部署linux系统   02.部署nginx网站服务   03.部署mysql数据库服务 ...

2760
来自专栏陈树义

2.Redis的基本配置

一、参数配置 redis.conf的主要配置参数的意义: daemonize:是否以后台daemon方式运行 pidfile:pid文件位置 port:监听的端...

3525
来自专栏奇梦博客

AppNode如何安装使用PureFTPd服务器

2、记得AppNode防火墙开放21端口和如下被动端口,如果是云服务器需到服务器控制台安全组开放端口,否则无法连接;

4817

扫码关注云+社区

领取腾讯云代金券