mirror of
https://github.com/IceWhaleTech/CasaOS.git
synced 2025-06-16 05:55:33 +00:00
59 lines
1.6 KiB
Go
59 lines
1.6 KiB
Go
/*
|
|
* @Author: LinkLeong link@icewhale.com
|
|
* @Date: 2022-05-23 17:18:56
|
|
* @LastEditors: LinkLeong
|
|
* @LastEditTime: 2022-06-09 21:48:10
|
|
* @FilePath: /CasaOS/route/socket.go
|
|
* @Description:
|
|
* @Website: https://www.casaos.io
|
|
* Copyright (c) 2022 by icewhale, All Rights Reserved.
|
|
*/
|
|
package route
|
|
|
|
import (
|
|
"strconv"
|
|
"time"
|
|
|
|
"github.com/IceWhaleTech/CasaOS-Common/utils/port"
|
|
"github.com/IceWhaleTech/CasaOS/model/notify"
|
|
"github.com/IceWhaleTech/CasaOS/pkg/config"
|
|
"github.com/IceWhaleTech/CasaOS/service"
|
|
f "github.com/ambelovsky/gosf"
|
|
)
|
|
|
|
func SocketInit(msg chan notify.Message) {
|
|
// set socket port
|
|
socketPort := 0
|
|
if len(config.ServerInfo.SocketPort) == 0 {
|
|
socketPort, _ = port.GetAvailablePort("tcp")
|
|
config.ServerInfo.SocketPort = strconv.Itoa(socketPort)
|
|
config.Cfg.Section("server").Key("SocketPort").SetValue(strconv.Itoa(socketPort))
|
|
config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath)
|
|
} else {
|
|
socketPort, _ = strconv.Atoi(config.ServerInfo.SocketPort)
|
|
if !port.IsPortAvailable(socketPort, "tcp") {
|
|
socketPort, _ := port.GetAvailablePort("tcp")
|
|
config.ServerInfo.SocketPort = strconv.Itoa(socketPort)
|
|
config.Cfg.Section("server").Key("SocketPort").SetValue(strconv.Itoa(socketPort))
|
|
config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath)
|
|
}
|
|
}
|
|
|
|
f.OnConnect(func(c *f.Client, request *f.Request) {
|
|
service.ClientCount += 1
|
|
})
|
|
f.OnDisconnect(func(c *f.Client, request *f.Request) {
|
|
service.ClientCount -= 1
|
|
})
|
|
go func(msg chan notify.Message) {
|
|
for v := range msg {
|
|
f.Broadcast("", v.Path, &v.Msg)
|
|
time.Sleep(time.Millisecond * 100)
|
|
}
|
|
}(msg)
|
|
|
|
f.Startup(map[string]interface{}{
|
|
"port": socketPort,
|
|
})
|
|
}
|