自己的客服系统做好了,官网页面也有了,但是没有介绍性的内容文章。网站被收录的太少,这样会导致网站的权重不高,搜索排名比较低。因此要简单的加上一个小型的内容管理功能。设计数据库很简单的两张表,分类表和内容表DROPTABLEIFEXISTS`cms_cate`;CREATETABLE`cms_cate`(`id`int(11)NOTNULLAUTO_INCREMENT,`cat_name`varchar(50)NOTNULLDEFAULT''COMMENT'分类名称',`created_at`timestampNOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间
在我的客服系统项目中,我使用的gin框架没有自带session功能,需要经过下面的整合处理使用的是 github.com/gin-contrib/sessions在我的tools包下packagetoolsimport("github.com/gin-contrib/sessions""github.com/gin-contrib/sessions/cookie""github.com/gin-gonic/gin")//中间件,处理sessionfuncSession(keyPairsstring)gin.HandlerFunc{store:=SessionConfig()returnses
在我的客服系统项目中,我使用的gin框架没有自带session功能,需要经过下面的整合处理使用的是 github.com/gin-contrib/sessions在我的tools包下packagetoolsimport("github.com/gin-contrib/sessions""github.com/gin-contrib/sessions/cookie""github.com/gin-gonic/gin")//中间件,处理sessionfuncSession(keyPairsstring)gin.HandlerFunc{store:=SessionConfig()returnses
前言从上一小结中我们快速入门了workerman中的GatewayWorker的初步使用.接下来我们继续深入的使用GatewayWorker.长连接绑定用户id实现实现一对一客服聊天背景我们从下载的Event源代码中会看到Gateway::sendToAll("$client_idlogin\r\n");这样一行代码,这行代码的意思是向所有人发送当前用户已登录的消息通知,但是这样是不太符合现实需求的.我们如何实现一对一发送消息给指定用户,而不需要向所有用户发送消息实现思路1.首先改在GateWayWoker下的Event源码首先注释掉该行代码Gateway::sendToAll("$clien
前言从上一小结中我们快速入门了workerman中的GatewayWorker的初步使用.接下来我们继续深入的使用GatewayWorker.长连接绑定用户id实现实现一对一客服聊天背景我们从下载的Event源代码中会看到Gateway::sendToAll("$client_idlogin\r\n");这样一行代码,这行代码的意思是向所有人发送当前用户已登录的消息通知,但是这样是不太符合现实需求的.我们如何实现一对一发送消息给指定用户,而不需要向所有用户发送消息实现思路1.首先改在GateWayWoker下的Event源码首先注释掉该行代码Gateway::sendToAll("$clien
目录背景workerman介绍workman的特点应用场景workerman初体验项目搭建gatewayworker介绍搭建workerman整合入项目及长连接实现群发功能初体验聊天页面展示时出现的问题workerman群发与客户端和服务端保持双向消息推送理解gatewayworker的执行过程onConnect($client_id)连接过程onMessage($client_id,$message)执行过程案例参考资料背景我之前在做聊天系统时,采用的是ajax异步不断的请求后台服务.这样做的好处时简单,快速.但是有个巨大的缺点就是对服务端的请求压力巨大,容易崩溃.如下图就是一个利用Ajax
目录背景workerman介绍workman的特点应用场景workerman初体验项目搭建gatewayworker介绍搭建workerman整合入项目及长连接实现群发功能初体验聊天页面展示时出现的问题workerman群发与客户端和服务端保持双向消息推送理解gatewayworker的执行过程onConnect($client_id)连接过程onMessage($client_id,$message)执行过程案例参考资料背景我之前在做聊天系统时,采用的是ajax异步不断的请求后台服务.这样做的好处时简单,快速.但是有个巨大的缺点就是对服务端的请求压力巨大,容易崩溃.如下图就是一个利用Ajax
gobuild 命令好处我开发了一套在线客服系统源码,使用了gobuild进行编译在我的在线客服系统使用gobuild命令的主要好处是,它可以将Go程序编译成可执行文件,这样就可以将程序部署到生产环境中。在生产环境中运行的程序通常是编译后的可执行文件,因为这样可以提高程序的执行效率,并且还可以将源代码隐藏起来,避免被他人查看或篡改。另外,使用gobuild命令还可以在编译时对程序进行优化,以便在生产环境中提高程序的执行效率。总之,使用gobuild命令可以使得在线客服系统的Go程序更加高效、可靠,并且更加适合在生产环境中使用。 gobuild 命令解释gobuild是一个用于构建Go包的命
gobuild 命令好处我开发了一套在线客服系统源码,使用了gobuild进行编译在我的在线客服系统使用gobuild命令的主要好处是,它可以将Go程序编译成可执行文件,这样就可以将程序部署到生产环境中。在生产环境中运行的程序通常是编译后的可执行文件,因为这样可以提高程序的执行效率,并且还可以将源代码隐藏起来,避免被他人查看或篡改。另外,使用gobuild命令还可以在编译时对程序进行优化,以便在生产环境中提高程序的执行效率。总之,使用gobuild命令可以使得在线客服系统的Go程序更加高效、可靠,并且更加适合在生产环境中使用。 gobuild 命令解释gobuild是一个用于构建Go包的命
我的客服系统有一些接口是专门给内部调用的,只允许其他内部系统来调用,不允许随意访问,可以使用IP白名单机制使用Gin框架实现IP白名单机制可以使用中间件的方式实现。你可以编写一个中间件函数,在每个请求到来时检查它的IP地址是否在白名单中,如果不在,则返回错误信息。例如,你可以这样编写中间件函数:funcIPWhiteList(whitelist[]string)gin.HandlerFunc{returnfunc(c*gin.Context){//获取请求的IP地址ip:=c.ClientIP()//检查IP地址是否在白名单中allowed:=falsefor_,value:=rangewhi