修复缓存
Build docker and publish / build (20.15.1) (push) Successful in 7m26s

This commit is contained in:
2026-03-06 21:58:29 -08:00
parent 19932bb9f7
commit 4d913c1728
175 changed files with 437 additions and 12104 deletions
-123
View File
@@ -1,123 +0,0 @@
package device
import (
"encoding/json"
"fmt"
"io"
"log"
"net"
"net/http"
"strings"
"sync"
"testing"
"time"
"github.com/pkg/errors"
"github.com/gorilla/websocket"
)
func TestDevice(t *testing.T) {
t.Skip("skip test")
/* deviceManager := NewDeviceManager(10, 3)
deviceManager.OnDeviceOnline = func(userID int64, deviceID, session string) {
fmt.Printf("✅ 设备 %s (用户 %d) 上线\n", deviceID, userID)
}
deviceManager.OnDeviceOffline = func(userID int64, deviceID, session string) {
fmt.Printf("❌ 设备 %s (用户 %d) 下线\n", deviceID, userID)
}
deviceManager.OnDeviceKicked = func(userID int64, deviceID, session string, operator Operator) {
fmt.Printf("⚠️ 设备 %s (用户 %d) 被踢下线\n", deviceID, userID)
}
deviceManager.OnMessage = func(userID int64, deviceID, session string, message string) {
log.Printf("✅收到消息: 设备 %s (用户 %d) 内容: %s,sesion: %s\n", deviceID, userID, message, session)
}
engine := gin.Default()
engine.GET("/ws/:userid/:device_number", func(c *gin.Context) {
//根据Authorization获取session
authorization := c.GetHeader("Authorization")
userid, err := strconv.ParseInt(c.Param("userid"), 10, 64)
if err != nil {
t.Errorf("get user id err:%v", err)
return
}
deviceNumber := c.Param("device_number")
deviceManager.AddDevice(c, authorization, userid, deviceNumber, 3)
return
})
go func() {
err := http.ListenAndServe(":8081", engine)
if err != nil {
t.Fatalf("engine start failed: %v", err)
}
}()
*/
h := http.Header{}
h.Add("Authorization", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJTZXNzaW9uSWQiOiIwMTk0Y2ZiNy1hYjY0LTdjYjMtODUzYi03ZGU5YTAzNWRlZTgiLCJVc2VySWQiOjI5LCJleHAiOjE3MzkyNTY1MDgsImlhdCI6MTczODY1MTcwOH0.BGKT5-hongJPZrA_yAb6cf6go5iDR8T9uu1ZxUg8HDw")
mutex := sync.Mutex{}
serverURL := fmt.Sprintf("ws://localhost:8080/v1/app/ws/%d/%s", 29, "15502502051") // 假设 userID 为 1001,设备ID 为 deviceA
// 建立 WebSocket 连接
conn, resp, err := websocket.DefaultDialer.Dial(serverURL, h)
if err != nil {
all, err := io.ReadAll(resp.Body)
t.Fatalf("websocket dial failed: %v:%s", err, string(all))
}
// 启动一个 goroutine 来读取服务器消息
go func() {
for {
_, msg, err := conn.ReadMessage()
if err != nil {
if errors.Is(err, net.ErrClosed) || strings.Contains(err.Error(), "use of closed network connection") {
log.Println("连接已关闭")
return
}
log.Printf("接收消息失败: %v", err)
return
}
fmt.Printf("收到来自服务器的消息: %s\n", msg)
}
}()
//发送心跳
go func() {
ticker := time.NewTicker(time.Second * 5)
defer ticker.Stop()
for range ticker.C {
mutex.Lock()
err := conn.WriteMessage(websocket.TextMessage, []byte("ping"))
mutex.Unlock()
if err != nil {
if strings.Contains(err.Error(), "use of closed network connection") {
log.Println("连接已关闭")
return
}
t.Errorf("websocket 写入失败: %v", err)
return
}
}
}()
updateSubscribe, _ := json.Marshal(map[string]interface{}{
"method": "test_method",
})
//发送一条消息
mutex.Lock()
err = conn.WriteMessage(websocket.TextMessage, updateSubscribe)
mutex.Unlock()
if err != nil {
t.Errorf("websocket write failed: %v", err)
}
time.Sleep(time.Second * 20)
conn.Close()
time.Sleep(time.Second * 5)
}