摘要:
golang中没有很多其他语言中的截取字符串函数 现在单独定义一个函数来处理 // 截取字符串,支持多字节字符 // start:起始下标,负数从从尾部开始,最后一个为-1 // length:截取长度,负数表示截取到末尾 func SubStr(str string, start int, len 阅读全文
摘要:
在线客服系统是什么 在线客服系统可以看作一种即时通讯软件,提供网站及其他应用和访客对话的平台,更加方便网站与访客之间的交流。访客无需安装软件就可以访问企业应用,获取自己想要的信息。 一般来说,在线客服系统的特点包含可最小化、最大化,快速、易用三点,沟通方式多样化。 在线客服系统只需在浏览器窗口就可以 阅读全文
摘要:
前言 客服系统比较常见,主流的还是采用三方SDK接入,这些SDK的实现方式大都采用长连接,性能要求比较高,费用也偏高。我们在此的目标是开发一个属于自己的客服系统,完全的无依赖第三方,完全自己控制。 一、聊天系统为什么使用长连接? 客服系统的及时性要求很高,客服一般要处理多个用户的聊天咨询,在一般情况 阅读全文
摘要:
这是因为我的goland版本比较低 go sdk的版本比较高 在 golang 安装路径下寻找:go1.18.3\src\runtime\internal\sys\zversion.go 文件 增加一个自己的版本,在 zversion.go 文件中追加如下行(你的版本号)并保存 const TheV 阅读全文
摘要:
宝塔面板一键部署包 【软件商店=>一键部署=>导入项目】 点击一键部署,输入域名后,全部默认即可完成 GOFLY是一款基于Golang+Vue开发的在线客服系统。一套可私有化部署的在线客服系统,编译后的二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的网 阅读全文
摘要:
在读取一个websocket资源的时候,有时候会报错,就会返回一个状态码 这些状态码的含义是如下面列表: 0–999 保留段, 未使用. 1000 CLOSE_NORMAL 正常关闭; 无论为何目的而创建, 该链接都已成功完成任务. 1001 CLOSE_GOING_AWAY 终端离开, 可能因为服 阅读全文
摘要:
linux下的宝塔面板,已经是很多开发者管理自己服务器的重要工具 我自己开发了一款在线客服系统,现在想实现在宝塔面板中,一键部署好,下面就是适配的一些注意事项 项目是使用golang开发的二进制包,有一些地方和php的项目不太一样 根目录里面需要增加auto_install.json { "php_ 阅读全文
摘要:
直接使用正则表达式去掉字符串中的html标签 很简单的函数 function replaceHtml(str){ return str.replace(/<\/?.+?\/?>/g,''); } 阅读全文
摘要:
当有比较复杂的替换字符串的需求时候 可以使用我封装的这个函数,通过正则表达式把字符串替换掉 func ReplaceStringByRegex(str, rule, replace string) (string, error) { reg, err := regexp.Compile(rule) 阅读全文
摘要:
如何使用正则来匹配出自己想要的子字符串,我封装了个小函数 func GetOneStringByRegex(str, rule string) (string, error) { reg, err := regexp.Compile(rule) if reg == nil || err != nil 阅读全文
摘要:
简单封装一下js操作cookie的函数 //设置cookie function setCookie(name,value,expireTime) { var exp = new Date(); exp.setTime(exp.getTime() + expireTime*1000); documen 阅读全文
摘要:
如果我们使用cookie作为前端存储数据,我遇到的一个问题就是 跨iframe页面,setCookie不起作用,所以迫使我使用localStorge模拟实现。 主要是为了实现过期的效果,利用存储的创建时间和过期时间,模拟实现到期清除效果 function setFakeCookie(name,val 阅读全文
摘要:
获取当前日期的时间戳函数 以及获取当前日期的函数 //js获取当前时间 function getNowDate() { var myDate = new Date; var year = myDate.getFullYear(); //获取当前年 var mon = myDate.getMonth( 阅读全文
摘要:
默认的获取日期的格式是utc格式的 下面这个函数是普通的日期时间格式 function getNowDate() { var myDate = new Date; var year = myDate.getFullYear(); //获取当前年 var mon = myDate.getMonth() 阅读全文
摘要:
把选取直接新建为新图层,快捷键是 ctrl +j 阅读全文
摘要:
有两个快捷键 ctrl + r 是当前页面替换 ctrl + shift + r 是指定路径下替换所有 阅读全文
摘要:
原先的历史访客列表,是通过触底分页的。当页面滑动到底部就加载下一页。 但是这种方式经常卡卡的,有的手机还不兼容,不能正常分页 现在改为数字分页形式,并且有上一页和下一页的按钮 下载地址: https://www.sopans.com https://www.v1kf.com https://gofl 阅读全文
摘要:
GOFLY在线客服的APP端助手,历史访客列表,原先没有搜索功能 现在,在上部区域增加了通过访客搜索,以及通过Tag标签搜索功能 下载地址: https://www.sopans.com https://www.v1kf.com 阅读全文
摘要:
上次修改完冲突文件以后,再次git pull的时候报错 git pull 报错error: Pulling is not possible because you have unmerged files. 解决办法,需要先add一下修改过的文件才可以pull git add -u git pull 阅读全文
摘要:
相信每一个程序员都想做出自己的产品,不管是前端还是后端。 先来介绍下我自己,山东人,后端开发程序员。毕业后在济南工作两年,然后毅然决然独自一人前往北京。第一份工作是在新浪网,一待就是四年,四年时间工资没涨。然后离职去了一家在望京的某母婴家政平台。 在望京这里,有一种奇怪的上线制度,是时间必须是在晚上 阅读全文
摘要:
这是因为创建的目录是多级目录 创建多级目录应该使用 os.MkdirAll(fildDir, os.ModePerm) 就可以解决 阅读全文
摘要:
官方的math 包中提供了取整的方法,向上取整math.Ceil() ,向下取整math.Floor() package main import ( "fmt" "math" ) func main(){ x := 1.1 fmt.Println(math.Ceil(x)) // 2 fmt.Pri 阅读全文
摘要:
当使用gorm的时候出现这个错误 var res *User_attr DB.Table("user_attr").Where(query, args...).Order("id desc").Find(res) 这里错误的点是 var res *User_attr 这样声明变量res实际上是nil 阅读全文
摘要:
GOFLY在线客服系统支持内嵌到小程序中 可以直接使用小程序的webview直接嵌入访客链接就可以了 下面就是小程序的实例代码 index.wxml <view class="page-body"> <button open-type="getUserInfo" bindgetuserinfo="g 阅读全文
摘要:
GOFLY在线客服系统支持多语言展示,特别适合外贸网站和访客即时通讯沟通 访客界面切换成英文的方式方法 访客链接url参数中增加lang=en,界面就会切换成英文; 底部版权中文字符,管理员可以在后台改成英文的名称; 在线客服显示中文名称字符,可以在后台把显示的名称改成英文名称 阅读全文
摘要:
GOFLY在线客服系统上传的图片文件比较多,所以把图片传到oss这样会比较省流量 首先需要先开通好oss,获取到以下几个参数: 阿里云OSS(EndPoint); 阿里云OSS(AccessKeyId)阿里云OSS(AccessKeySecret); 阿里云OSS(OssBucket); 阿里云OS 阅读全文
摘要:
时常分不清到底是哪个最大哪个最小,以及他们表示的范围 举例子,下面这个意思是大于900px的时候,匹配900px 到无限大 @media screen and (min-width:900px) 举例子,下面这个意思是小于900px的时候,匹配0 到900px @media screen and ( 阅读全文
摘要:
在我的GOFLY在线客服系统中,有时候会出现访问不了的情况 查看日志,发现有很多too many open file打开文件太多的现象出现。这句话是说打开的文件句柄太多,并且没有关闭 使用lsof -p 端口号,可以查看到都是sock句柄,也就是说我的websocket服务断开的时候没有及时关闭 仔 阅读全文
摘要:
robots.txt允许所有搜索引擎收录 根目录下robots.txt User-agent: * Allow: / 阅读全文
摘要:
我的项目使用的是 gin 框架,默认开发情况下运行起来还是没有大问题的,go run xxx.go 开着命令窗口,然后去浏览器访问就行了。现在想要把服务部署到服务器,这个命令窗口可就不能保证一直运行了。 让进程后台运行很简单,加个 nohup xxxx & 就行,但是想要把进程变成守护进程,就不能这 阅读全文
摘要:
使用nginx开启反向代理的时候,如果不排除掉静态资源,比如css/images/js 那么这些请求也会进入到反代的服务里,会给服务一定的压力 我们需要让nginx处理静态资源,不要后端服务处理 可以参照gofly在线客服系统配置nginx的示例,使用到了try_files指令 #PROXY-STA 阅读全文
摘要:
GOFLY在线客服系统源码是评级最高的客户服务系统软件,用于加强客户关系,客服源码系统是一个强大的客户服务沟通纽带,最大化避免您流失客户。 GOFLY在线客服系统源码提供无缝客户服务所需的一切: GOFLY在线客服系统源码演示及下载系统程序小,安装使用简单的在线客服系统。 主要特点: 1.基于Gol 阅读全文
摘要:
let startTime1 = new Date(new Date().toLocaleDateString()).getTime()/1000; // 当天0点 let endTime1 = (new Date(new Date().toLocaleDateString()).getTime() 阅读全文
摘要:
项目里面的 web 框架是 gin,这个框架给我的感觉就是非常的小巧实用。使用的时候,基础运用非常的简单,相信看看文档大家都能运行起来,没什么可说的。如果现在需求是增加一个日志中间件,记录下 http 请求的一些数据,并且需要按日期来生成每天的日志文件,我是这么做的。 使用的日志库是 github. 阅读全文
摘要:
为什么要得到绝对路径?因为后面上传文件的目录,日志的目录,加载模板文件的目录都需要这个路径。 这里有一点难处理的问题是,需要能同时支持 go run xxx.go 执行,以及相对路径执行./xxxx,和绝对路径执行 /var/www/xxx go run 执行是为了在开发的时候,能够源码运行,随时调 阅读全文
摘要:
默认的gin框架模板中,如果模板变量是html文本 展示模板变量的时候是以html实体的形式出现的,不是以html形式渲染的 这个时候,就需要在传递变量的时候简单处理一下 template.HTML类型转换一下 阅读全文
摘要:
win10默认情况下,隔一会就自动休眠睡眠了,现在不想让休眠 在左下角图标,设置里面 找到 “系统“ 电源和睡眠 阅读全文
摘要:
我一直以来都是做PHP开发,除非是使用swoole框架,大部分PHP应用都是把代码传到服务器对应的目录里,启动nginx+php-fpm来运行PHP代码。 golang和PHP是不一样的,golang可以作为一个后端的服务监听端口来运行,这个时候就要能在命令行中启动和传递参数。 选用github.c 阅读全文
摘要:
icono是一套使用纯CSS3制作的CSS图标。icono可以使用所有的HTML元素来制作图标,如 <i> 、 <div> 、 <span> 等等。 使用方法 首先你需要将 icono.min.css 文件加入到HTML文档的头部。 <link href="css/icono.min.css" re 阅读全文
摘要:
go env :查看go语言的环境变量信息 有几个环境变量是需要注意的 GOPATH 这个是我们的第三方库下载的位置 GO111MODULE 看看go modules是否开启了 GOPROXY 代理的网站 set GO111MODULE=on set GOARCH=amd64 set GOBIN= 阅读全文