codecamp

CRMEB V4 长连接

宝塔长连接开启方法:

长连接是系统智慧客服功能和后台消息通知需要的

1、点击网站 找对对应的项目网站

2、依次点击以上步骤 进入到项目根目录

3、点击上图的绿框的终端按钮 进入终端

4、执行启动命令

sudo -u www php think workerman start --d

出现以下提示说明启动成功

注意:

a、绿色框如果现实为tcp 说明后台没有开启wss

需要去后台设置-系统设置-基础配置-wss配置中 开启wss 并上传ssl证书(与宝塔配置的ssl保持一致) [info]注意:v4.3.1及之后版本去掉了这个ws设置 然后清除缓存 重启长连接 重启方法见下方第5步

b、黄色框部分为需要放行的端口

需要注意的是 放行端口时服务器安全组和宝塔安全中都需要放行20002和20003端口 20012端口可不放行 [info]注意:v4.3.0及以后版本长链接不需要放行20002和20003端口,请设置代理

location /notice {
        proxy_pass http://127.0.0.1:20002/;  
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-real-ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
    location /msg {
        proxy_pass http://127.0.0.1:20003/;  
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-real-ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }

[info]如果同一台服务器安装多个本系统,请修改常链接端口

第一步:程序需要修改:/config/workerman.php

'admin' => [
//协议
'protocol' => 'websocket',
//监听地址
'ip' => '0.0.0.0',
//监听后台消息端口
'port' => 20002,
//设置当前Worker实例启动多少个进程
'serverCount' => 1,
],
'chat' => [
//协议
'protocol' => 'websocket',
//监听地址
'ip' => '0.0.0.0',
//监听客服消息端口 开源版没内置客服系统可以不用修改
'port' => 20003,
//设置当前Worker实例启动多少个进程
'serverCount' => 1,
],

第二步:修改上面代理中的端口

proxy_pass http://127.0.0.1:20002/;  //20002 后台消息通知端口改为和第一步修改代码中的端口一样

第三步:重启命令,进入程序跟目录执行

//1、进入程序跟目录,如果linux宝塔可以点击进入站点目录,上面菜单中有打开命令框,默认就进入到程序跟目录,如果ssh面板中使用一下命令进入程序跟目录 例如:
cd /www/wwwroot/crmeb
//2、一般情况这么执行就可以
php think workerman restart --d
//2、如果存在权限问题,请使用一下命令
sudo -u www php think workerman restart --d

5、重启长连接

出现以下提示说明之前已启动 需要重启

重启的话 使用这个命令

sudo -u www php think workerman restart --d

成功提示跟第4步中的图显示一致

CRMEB V4 消息队列
CRMEB V4 定时任务
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

CRMEB V4操作说明

CRMEB V4用户管理

CRMEB v4 支付说明

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }