mirror of
https://github.com/IceWhaleTech/CasaOS.git
synced 2025-11-07 07:09:46 +00:00
Docking front-end
This commit is contained in:
parent
c1c1d45dda
commit
b341eaf6d3
@ -829,7 +829,12 @@ type Client struct {
|
|||||||
RtcSupported bool `json:"rtcSupported"`
|
RtcSupported bool `json:"rtcSupported"`
|
||||||
TimerId int `json:"timerId"`
|
TimerId int `json:"timerId"`
|
||||||
LastBeat time.Time `json:"lastBeat"`
|
LastBeat time.Time `json:"lastBeat"`
|
||||||
Offline bool `json:"offline"`
|
}
|
||||||
|
|
||||||
|
type PeerModel struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
Name service.Name `json:"name"`
|
||||||
|
RtcSupported bool `json:"rtcSupported"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func ConnectWebSocket(c *gin.Context) {
|
func ConnectWebSocket(c *gin.Context) {
|
||||||
@ -860,6 +865,7 @@ func ConnectWebSocket(c *gin.Context) {
|
|||||||
peerModel.ID = key
|
peerModel.ID = key
|
||||||
peerModel.DisplayName = name.DisplayName
|
peerModel.DisplayName = name.DisplayName
|
||||||
peerModel.DeviceName = name.DeviceName
|
peerModel.DeviceName = name.DeviceName
|
||||||
|
peerModel.Model = name.Model
|
||||||
peerModel.OS = name.OS
|
peerModel.OS = name.OS
|
||||||
peerModel.Browser = name.Browser
|
peerModel.Browser = name.Browser
|
||||||
peerModel.UserAgent = c.Request.UserAgent()
|
peerModel.UserAgent = c.Request.UserAgent()
|
||||||
@ -874,39 +880,43 @@ func ConnectWebSocket(c *gin.Context) {
|
|||||||
Path: "/",
|
Path: "/",
|
||||||
}
|
}
|
||||||
http.SetCookie(writer, &cookie)
|
http.SetCookie(writer, &cookie)
|
||||||
|
|
||||||
// 推给监控中心注册到用户集合中
|
|
||||||
handler.register <- client
|
|
||||||
if len(list) > 10 {
|
|
||||||
fmt.Println("有溢出", list)
|
|
||||||
}
|
|
||||||
if len(list) > 10 {
|
if len(list) > 10 {
|
||||||
kickoutList := []Client{}
|
kickoutList := []Client{}
|
||||||
count := len(list) - 10
|
count := len(list) - 10
|
||||||
for i := len(list) - 1; count > 0 && i > -1; i-- {
|
for i := len(list) - 1; count > 0 && i > -1; i-- {
|
||||||
if _, ok := handler.clients[list[i].ID]; !ok {
|
if _, ok := handler.clients[list[i].ID]; !ok {
|
||||||
count--
|
count--
|
||||||
kickoutList = append(kickoutList, Client{ID: list[i].ID, Name: service.GetNameByDB(list[i]), IP: list[i].IP, Offline: true})
|
kickoutList = append(kickoutList, Client{ID: list[i].ID, Name: service.GetNameByDB(list[i]), IP: list[i].IP})
|
||||||
service.MyService.Peer().DeletePeer(list[i].ID)
|
service.MyService.Peer().DeletePeer(list[i].ID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(kickoutList) > 0 {
|
// if len(kickoutList) > 0 {
|
||||||
other := make(map[string]interface{})
|
// other := make(map[string]interface{})
|
||||||
other["type"] = "kickout"
|
// other["type"] = "kickout"
|
||||||
other["peers"] = kickoutList
|
// other["peers"] = kickoutList
|
||||||
otherBy, err := json.Marshal(other)
|
// otherBy, err := json.Marshal(other)
|
||||||
fmt.Println(err)
|
// fmt.Println(err)
|
||||||
client.handler.broadcast <- otherBy
|
// client.handler.broadcast <- otherBy
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
list = service.MyService.Peer().GetPeers()
|
list = service.MyService.Peer().GetPeers()
|
||||||
if len(list) > 10 {
|
if len(list) > 10 {
|
||||||
fmt.Println("解决完后依然有溢出", list)
|
fmt.Println("解决完后依然有溢出", list)
|
||||||
}
|
}
|
||||||
clients := []Client{}
|
currentPeer := PeerModel{ID: client.ID, Name: client.Name, RtcSupported: client.RtcSupported}
|
||||||
|
pmsg := make(map[string]interface{})
|
||||||
|
pmsg["type"] = "peer-joined"
|
||||||
|
pmsg["peer"] = currentPeer
|
||||||
|
pby, err := json.Marshal(pmsg)
|
||||||
|
fmt.Println(err)
|
||||||
|
for _, v := range handler.clients {
|
||||||
|
v.send <- pby
|
||||||
|
}
|
||||||
|
//client.handler.broadcast <- pby
|
||||||
|
clients := []PeerModel{}
|
||||||
for _, v := range client.handler.clients {
|
for _, v := range client.handler.clients {
|
||||||
if _, ok := handler.clients[v.ID]; ok {
|
if _, ok := handler.clients[v.ID]; ok {
|
||||||
clients = append(clients, *handler.clients[v.ID])
|
clients = append(clients, PeerModel{ID: v.ID, Name: v.Name, RtcSupported: v.RtcSupported})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -915,14 +925,12 @@ func ConnectWebSocket(c *gin.Context) {
|
|||||||
other["peers"] = clients
|
other["peers"] = clients
|
||||||
otherBy, err := json.Marshal(other)
|
otherBy, err := json.Marshal(other)
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
client.handler.broadcast <- otherBy
|
client.send <- otherBy
|
||||||
|
|
||||||
pmsg := make(map[string]interface{})
|
// 推给监控中心注册到用户集合中
|
||||||
pmsg["type"] = "peer-joined"
|
handler.register <- client
|
||||||
pmsg["peer"] = client
|
|
||||||
pby, err := json.Marshal(pmsg)
|
client.send <- []byte(`{"type":"ping"}`)
|
||||||
fmt.Println(err)
|
|
||||||
client.handler.broadcast <- pby
|
|
||||||
|
|
||||||
data := make(map[string]string)
|
data := make(map[string]string)
|
||||||
data["displayName"] = client.Name.DisplayName
|
data["displayName"] = client.Name.DisplayName
|
||||||
@ -956,7 +964,7 @@ func init() {
|
|||||||
handler.broadcast <- []byte(`{"type":"ping"}`)
|
handler.broadcast <- []byte(`{"type":"ping"}`)
|
||||||
}
|
}
|
||||||
//定时任务
|
//定时任务
|
||||||
spec := "*/20 * * * * ?" //cron表达式,每五秒一次
|
spec := "*/30 * * * * ?" //cron表达式,每五秒一次
|
||||||
// 添加定时任务,
|
// 添加定时任务,
|
||||||
crontab.AddFunc(spec, task)
|
crontab.AddFunc(spec, task)
|
||||||
// 启动定时器
|
// 启动定时器
|
||||||
@ -970,6 +978,7 @@ func (c *Client) writePump() {
|
|||||||
for {
|
for {
|
||||||
// 广播推过来的新消息,马上通过websocket推给自己
|
// 广播推过来的新消息,马上通过websocket推给自己
|
||||||
message, _ := <-c.send
|
message, _ := <-c.send
|
||||||
|
fmt.Println("推送消息", string(message), "1")
|
||||||
if err := c.conn.WriteMessage(websocket.TextMessage, message); err != nil {
|
if err := c.conn.WriteMessage(websocket.TextMessage, message); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -1032,6 +1041,7 @@ func (c *Client) readPump() {
|
|||||||
delete(data, "to")
|
delete(data, "to")
|
||||||
message, err = json.Marshal(data)
|
message, err = json.Marshal(data)
|
||||||
toC.send <- message
|
toC.send <- message
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
c.handler.broadcast <- message
|
c.handler.broadcast <- message
|
||||||
|
|||||||
@ -7,6 +7,8 @@ type PeerDriveDBModel struct {
|
|||||||
UserAgent string `json:"user_agent"`
|
UserAgent string `json:"user_agent"`
|
||||||
DisplayName string `json:"display_name"`
|
DisplayName string `json:"display_name"`
|
||||||
DeviceName string `json:"device_name"`
|
DeviceName string `json:"device_name"`
|
||||||
|
Model string `json:"model"`
|
||||||
|
|
||||||
IP string `json:"ip"`
|
IP string `json:"ip"`
|
||||||
OS string `json:"os"`
|
OS string `json:"os"`
|
||||||
Browser string `json:"browser"`
|
Browser string `json:"browser"`
|
||||||
|
|||||||
@ -95,7 +95,7 @@ func GetNameByDB(m model2.PeerDriveDBModel) Name {
|
|||||||
device += m.Browser
|
device += m.Browser
|
||||||
}
|
}
|
||||||
return Name{
|
return Name{
|
||||||
Model: m.DeviceName,
|
Model: m.Model,
|
||||||
OS: m.OS,
|
OS: m.OS,
|
||||||
Browser: m.Browser,
|
Browser: m.Browser,
|
||||||
DeviceName: device,
|
DeviceName: device,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user