Go melody库基本使用
就参考如下:
基本就是初始化, 定义钩子, 跟gin绑定
var m *melody.Melody
// 单例初始化 melody
func initUsbMelody() {
if m != nil {
return
}
m = melody.New()
cfg := &melody.Config{
WriteWait: 10 * time.Second,
PongWait: 1 * time.Second,
PingPeriod: (1 * time.Second * 9) / 10,
MaxMessageSize: 4096,
MessageBufferSize: 2048,
}
m.Config = cfg
// debug log级别:打印客户端已连接
m.HandleConnect(func(s *melody.Session) {
logger.Log.Debugf("%v 已连接\n", s.RemoteAddr())
})
// debug log级别:打印客户端已断开
m.HandleDisconnect(func(s *melody.Session) {
logger.Log.Debugf("%v 已断开\n", s.RemoteAddr())
})
m.HandleMessage(func(s *melody.Session, msg []byte) {
logger.Log.Debugf("接收到 %v 的信息\n", s.RemoteAddr())
// 解析前端的websocket信息方式: json解析; 使用 mapstructure配合gojsonq,更加灵活
var msgType string
var data any
switch msgType {
case "start": // 开始制作
// ... 调用业务
// 不考虑做取消。 dd开始之后整个U盘的数据就已经被覆盖了
_ = data
}
})
}
// 将镜像文件覆盖到pe中
func MakeWinpeController() gin.HandlerFunc {
return func(c *gin.Context) {
initUsbMelody()
err := m.HandleRequest(c.Writer, c.Request)
_ = err
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)