字节笔记本
2026年3月22日
GO-FLY - Go 语言开源在线客服系统
slug: gofly-live-chat topic: go-column
GO-FLY 是一款使用 Go 语言开发的开源在线客服系统,提供完整的实时聊天功能,支持私有化部署。系统基于 Gin 框架 + WebSocket 实时通信 + Vue.js + Element UI 构建,具备轻量、易部署、可二次开发的特点,适用于中小型企业网站和电商平台的在线客服场景。
项目简介
GO-FLY 由开发者 taoshihan1991(程序员老狼)主导开发,是一款功能完整的在线客服系统。与商业客服产品相比,GO-FLY 的核心优势在于完全开源、支持私有化部署,企业可以将客服系统部署在自己的服务器上,确保数据安全和隐私。
该项目的定位是提供一套简洁高效的在线客服解决方案。系统采用前后端分离架构,后端使用 Go 语言提供高性能的 API 服务和 WebSocket 通信,前端使用 Vue.js 和 Element UI 构建响应式的管理界面。同时提供可嵌入网页的客服聊天窗口,访客无需安装任何插件即可与客服人员进行实时对话。
GO-FLY 在 GitHub 上获得了超过 2300 个 Star,社区活跃度较高,有 652 个 Fork,足以说明其在开源社区中受到的关注和认可。
核心特性
实时 WebSocket 聊天
GO-FLY 基于 WebSocket 协议实现客户端与客服端的实时通信,确保消息的低延迟传输。客服人员可以实时接收访客的消息,访客也能即时看到客服的回复。相比传统的 HTTP 轮询方式,WebSocket 在保持长连接的同时,大幅降低了服务器资源的消耗和网络带宽的占用。
多客服支持
系统支持配置多个客服账号,每个客服可以独立管理自己的访客对话。通过聊天链接中的 kefu_id 参数,可以指定特定客服进行接待。这种设计适用于团队协作场景,不同业务线的客服可以分别处理对应渠道的咨询请求。
网页嵌入与弹窗模式
GO-FLY 提供了灵活的接入方式,支持两种集成模式:
- 直接链接模式:通过 URL 直接进入聊天页面,适用于独立客服页面
- 弹窗嵌入模式:通过一段 JavaScript 代码嵌入到任意网页中,访客点击浮动按钮即可打开聊天窗口
弹窗嵌入模式特别适合网站集成,只需在网页中引入一段 JS 代码即可完成接入,不会对原有页面结构产生任何影响。
JWT 身份认证
系统使用 jwt-go 库实现用户身份认证机制,确保 API 接口调用的安全性。JWT(JSON Web Token)是一种轻量级的身份认证方案,客服登录后获取 Token,后续请求携带 Token 即可完成身份验证,无需每次都传输用户名和密码。
轻量级架构
GO-FLY 的整体设计追求轻量化,Go 语言编译后的二进制文件体积小、内存占用低,对服务器资源的要求极低。这使得它非常适合资源有限的环境部署,比如小型 VPS 服务器。
数据持久化
使用 GORM 作为 ORM 框架与 MySQL 数据库进行交互,聊天记录、用户信息、配置数据等均持久化存储在数据库中,确保数据不会因服务重启而丢失。项目提供了 import.sql 文件用于数据库初始化。
技术栈
后端技术
- Go:项目核心语言,提供高并发的网络服务能力
- Gin:高性能 HTTP Web 框架,处理路由和中间件逻辑
- WebSocket:实现客户端与服务器之间的全双工实时通信
- jwt-go:JWT 身份认证库,保障 API 接口安全
- go.uuid:UUID 生成库,用于唯一标识的生成
- GORM:Go 语言 ORM 框架,简化数据库操作
- Cobra:命令行工具框架,用于构建 CLI 命令
前端技术
- Vue.js:渐进式 JavaScript 框架,构建客服管理界面
- Element UI:基于 Vue.js 的 UI 组件库,提供丰富的界面组件
- JavaScript:原生 JS 用于聊天窗口的前端脚本
基础设施
- MySQL:关系型数据库,版本需 >= 5.5
- Docker:项目提供 Dockerfile,支持容器化部署
语言分布
项目代码中 Go 占比 32.5%,JavaScript 占比 29.9%,HTML 占比 28.6%,CSS 占比 9.0%。前后端代码比例均衡,体现了前后端分离的架构设计。
安装指南
环境准备
安装 MySQL 数据库(版本 >= 5.5)并创建数据库:
create database gofly charset utf8mb4;配置数据库连接
编辑 config/mysql.json 文件,配置数据库连接信息:
{
"Server": "127.0.0.1",
"Port": "3306",
"Database": "gofly",
"Username": "go-fly",
"Password": "go-fly"
}安装 Go 语言环境
# 下载 Go
wget https://studygolang.com/dl/golang/go1.20.2.linux-amd64.tar.gz
tar -C /usr/local -xvf go1.20.2.linux-amd64.tar.gz
# 配置环境变量
echo "PATH=\$PATH:/usr/local/go/bin" >> /etc/profile
echo "PATH=\$PATH:/usr/local/go/bin" >> ~/.bashrc
source /etc/profile
# 验证安装
go version
# 配置 Go 模块代理
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct源码安装
# 克隆代码
git clone https://github.com/taoshihan1991/go-fly.git
cd go-fly
# 导入数据库表结构
go run go-fly.go install
# 源码运行
go run go-fly.go server编译二进制文件
go build -o kefu编译完成后会生成 kefu 可执行文件,可以直接运行而无需 Go 环境。
二进制文件运行
# Linux
./kefu server
# 可选参数: -p 8082 指定端口, -d 后台运行
# Windows
kefu.exe server关闭服务
killall kefu快速开始
访问系统
服务启动后默认监听 8081 端口,直接通过浏览器访问 http://your-ip:8081 即可进入管理界面。
如需使用域名访问,可以通过 Nginx 等反向代理工具将域名请求转发到 8081 端口,从而隐藏端口号。
配置反向代理(Nginx 示例)
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# WebSocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}使用示例
直接链接聊天
通过 URL 直接进入指定客服的聊天页面:
http://127.0.0.1:8081/chatIndex?kefu_id=kefu2
其中 kefu_id 参数用于指定接待的客服人员。
弹窗嵌入聊天
在网页中嵌入以下 JavaScript 代码,页面右下角会出现客服浮动按钮,点击即可弹出聊天窗口:
(function(a, b, c, d) {
let h = b.getElementsByTagName('head')[0];
let s = b.createElement('script');
s.type = 'text/javascript';
s.src = c + "/static/js/kefu-front.js";
s.onload = s.onreadystatechange = function () {
if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") d(c);
};
h.appendChild(s);
})(window, document, "http://127.0.0.1:8081", function(u) {
KEFU.init({
KEFU_URL: u,
KEFU_KEFU_ID: "kefu2",
});
});使用时需将 http://127.0.0.1:8081 替换为实际的客服系统地址,将 kefu2 替换为目标客服 ID。
Docker 部署
项目根目录提供了 Dockerfile,可以通过 Docker 快速部署:
# 构建镜像
docker build -t gofly .
# 运行容器
docker run -d -p 8081:8081 --name gofly gofly建议在生产环境中使用 Docker Compose 管理 GO-FLY 及其依赖(MySQL),确保服务的可靠性和可维护性。
项目链接
- GitHub 仓库:https://github.com/taoshihan1991/go-fly
- 开源协议:Apache-2.0 License
- Star 数:2.3k+
- Fork 数:652+
- 最新 Release:16 个版本标签
- 主要贡献者:taoshihan1991(程序员老狼)、mkanako
GO-FLY 是一款实用的开源在线客服系统,适合需要自建客服平台的企业和个人开发者。其轻量级的设计使得部署和维护成本极低,Go 语言的高性能特性也确保了系统在高并发场景下的稳定性。需要提醒的是,该项目声明仅供个人学习测试使用,线上商用需注意合规性。对于需要快速集成客服功能的中小型网站,GO-FLY 是一个值得考虑的开源方案。