# IM客服

# 注意事项

  • 在运行客服前需要注意您的服务器端是否开启,阿里云、腾讯云需要自己添加安全规则的。
  • 如果需要在小程序上运行客服,需要配置SSL

# 前端设置

  1. 使用HBuilderX打开项目
  1. 找到项目目录下的config.js 将 web_socket_url 字段更改为您的域名(如果开启了SSL,请将ws更改为wss) 图片alt
例:
未开启SSL:web_socket_url: "ws://v1.a3mall.top:2348"
开启SSL: web_socket_url: "wss://v1.a3mall.top:2348"

注意:修改配置后,各端需要重新打包

# 后端设置

  1. 找到后端程序根目录下.env文件
// 修改以下配置
[WEB]
// 如果使用SSL,app_web_url字段,请修改成https
app_web_url = http://v1.a3mall.top/  // 修改成您的域名

[WEBSOCKET]
// 如果开启SSL请修改成wss
websocket_protocol = ws://    
// 修改成您的域名
websocket_url = v1.a3mall.top  
// 客服端口,需要和gateway_worker.php配置文件 port字段保持一致
websocket_port = 2348
  1. 修改config/gateway_worker.php
// 修改以下字段
'port'=>2348, // 监听端口
'ssl'=>false, // 如果使用SSL请设为true
// 如果不使用SSL,无需设置此字段
'context'=>[
	'ssl'=>[
		// cert 文件,需要采用绝对路径
		'local_cert'  => '/www/server/panel/vhost/cert/fullchain.pem', // 也可以是crt文件
		'local_pk'    => '/www/server/panel/vhost/cert/privkey.pem',
		'verify_peer' => false,
	],
],

# Windows 用户下运行

  1. workerman同时支持linux系统及windows系统。windows版本workerman本身不依赖任何扩展,只需要配置好PHP环境变量即可,windows版本workerman安装及注意事项
  2. 如果出现类似"php不是内部或外部命令"的提示,说明没有设置好php环境变量,请参考下面步骤设置 图片alt

# workerman的在Windows下与Linux下区别

1、win版本单个进程只支持200+个连接

2、win版本count属性无效,全部为单进程

3、cmd命令行启动

4、无法守护进程,cmd窗口关掉后服务即停止

cmd运行客服: 
php think websocket start|stop|restart -d (daemon(守护进程)方式启动)
php think websocket start 启动客服
php think websocket stop 停止客服
php think websocket restart 重启客服

# Linux用户(含Mac OS)

Linux用户只能使用Linux版本的Workerman。

  1. 安装PHP>=5.3.3,并安装了pcntl、posix扩展

  2. 建议安装event或者libevent扩展,但不是必须的(注意event扩展需要PHP>=5.4)

# Linux环境检查脚本

  • Linux用户可以运行以下脚本检查本地环境是否满足WorkerMan要求
curl -Ss https://www.workerman.net/check | php
  • 如果脚本中全部提示ok,则代表满足WorkerMan运行环境

(注意:检测脚本中没有检测event扩展或者libevent扩展,如果并发连接数大于1024建议安装event扩展或者libevent扩展)

# 已有PHP环境安装缺失扩展

  • 如果您的检测没有通过,请查看workeman官方安装说明:安装说明

# 服务器配置

nginx配置(以宝塔为例)

如果您未开启SSL,无需配置以下选项 图片alt 图片alt

map $http_upgrade $connection_upgrade {
 default upgrade;
 ''      close;
}
# 这里的backend可以改成自己需要的名称,我自己用的是wss。
upstream wss {
 # 这里的localhost是映射本地服务器,也可以是外网ip,2348是我ws开启的端口。
 server v1.a3mall.top:2348;
}

# 注意:这里的/wss后面没有/了哦
location /wss { 
 proxy_pass http://wss;
 proxy_http_version 1.1;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "Upgrade";
}

# 运行客服

在终端或者cmd运行:
php think websocket [ status ] [ -d ]
php think websocket start|stop|restart -d (daemon(守护进程)方式启动)

php think websocket status // 查看状态
php think websocket start // 启动
php think websocket stop // 停止
php think websocket restart // 重启

守护进程方式启动:
php think websocket -d