mirror of https://gitee.com/godoos/godoos.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.7 KiB
61 lines
1.7 KiB
package localchat
|
|
|
|
import (
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
// type SenderInfo struct {
|
|
// SenderIP string `json:"sender_ip"`
|
|
// Username string `json:"username"`
|
|
// }
|
|
type Message struct {
|
|
Type string `json:"type"` // 消息类型,如"text"、"image"等
|
|
Content string `json:"content"` // 消息内容
|
|
SenderInfo UserInfo `json:"senderInfo"` // 发送者的IP地址
|
|
FileInfo FilePartInfo `json:"fileInfo"`
|
|
FileList []UploadInfo `json:"fileList"`
|
|
}
|
|
type UserInfo struct {
|
|
IP string `json:"ip"`
|
|
Hostname string `json:"hostname"`
|
|
}
|
|
type UdpMessage struct {
|
|
Type string `json:"type"`
|
|
IP string `json:"ip"`
|
|
Hostname string `json:"hostname"`
|
|
Message string `json:"message"`
|
|
}
|
|
type UserList struct {
|
|
Type string `json:"type"`
|
|
Content []UdpMessage `json:"content"`
|
|
}
|
|
type UploadInfo struct {
|
|
Name string `json:"name"`
|
|
SavePath string `json:"save_path"`
|
|
Content string `json:"content"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
// 文件分片信息
|
|
type FilePartInfo struct {
|
|
FileName string `json:"filename"`
|
|
PartNumber int `json:"part_number"`
|
|
TotalParts int `json:"total_parts"`
|
|
}
|
|
|
|
// 分片上传状态跟踪
|
|
type UploadStatus struct {
|
|
sync.Mutex
|
|
Status map[string]int // key: fileName, value: 已上传分片数
|
|
}
|
|
|
|
var (
|
|
messageChan = make(chan Message, 100) // 缓存大小根据实际情况设定
|
|
)
|
|
var uploadStatus = UploadStatus{Status: make(map[string]int)}
|
|
var broadcartTime = 3 * time.Second
|
|
|
|
var broadcastAddr = "224.0.0.1:1679" // 多播地址
|
|
// var broadcastAddr = "255.255.255.255:1769" // 广播地址
|
|
var OnlineUsers = make(map[string]UdpMessage) // 全局map,key为IP,value为主机名
|
|
|