diff --git a/backend/main.go b/backend/main.go index 16c0a2f..b094130 100644 --- a/backend/main.go +++ b/backend/main.go @@ -48,6 +48,10 @@ func main() { Debug: *debug, TerminalOut: true, }) + if err != nil { + logger.Error("main new logger", err.Error()) + panic(err) + } //new login manager loginManager, err := login.NewLoginManager(".") @@ -62,8 +66,20 @@ func main() { // new server s := server.NewServer() + //get local ip + origins := []string{"http://localhost:9000"} + origins = append(origins, "http://localhost:9500") + + localIP, err := utils.GetLocalIP() + if err != nil { + logger.Error("main", fmt.Sprintf("get local ip : %s", err.Error())) + } else { + origins = append(origins, fmt.Sprintf("http://%s:9000", localIP)) + origins = append(origins, fmt.Sprintf("http://%s:9500", localIP)) + } + fmt.Println(123, origins) s.Routes.Use(cors.New(cors.Config{ - AllowOrigins: []string{"http://localhost:9000"}, + AllowOrigins: origins, AllowMethods: []string{"POST", "GET", "DELETE", "OPTIONS"}, AllowHeaders: []string{"Origin", "Content-Type"}, AllowCredentials: true, @@ -104,7 +120,6 @@ func main() { logger.Error("main", fmt.Sprintf("starting browser error : %s", err.Error())) } }() - fmt.Println(3, *ip, *port) // start http server logger.Info("main", fmt.Sprintf("http listen on ip: %s port: %d", *ip, *port)) if err := s.ServeHttp(*ip, *port); err != nil { diff --git a/backend/utils/ip.go b/backend/utils/ip.go new file mode 100644 index 0000000..71f5ebb --- /dev/null +++ b/backend/utils/ip.go @@ -0,0 +1,22 @@ +package utils + +import ( + "fmt" + "net" +) + +func GetLocalIP() (string, error) { + addrs, err := net.InterfaceAddrs() + if err != nil { + return "", err + } + + for _, addr := range addrs { + if ipNet, ok := addr.(*net.IPNet); ok && !ipNet.IP.IsLoopback() { + if ipNet.IP.To4() != nil { + return ipNet.IP.String(), nil + } + } + } + return "", fmt.Errorf("no local IP address found") +} diff --git a/src/boot/websocket.ts b/src/boot/websocket.ts index b0b689f..b6dd43b 100644 --- a/src/boot/websocket.ts +++ b/src/boot/websocket.ts @@ -4,8 +4,8 @@ import { initWebSocket } from 'src/services/websocket'; export default boot(({ app }) => { const $q = app.config.globalProperties.$q as QVueGlobals; - const host = window.location.hostname; // gets current domain or IP - const port = 8100; // your WebSocket port + const host = window.location.hostname; + const port = 8100; const randomId = Math.floor(Math.random() * 10001); // random number from 0 to 10000 const ws = initWebSocket(`ws://${host}:${port}/ws?id=q${randomId}`, $q); diff --git a/src/components/scenes/ScenesPage.vue b/src/components/scenes/ScenesPage.vue index 3d6b545..3e6761d 100644 --- a/src/components/scenes/ScenesPage.vue +++ b/src/components/scenes/ScenesPage.vue @@ -133,9 +133,12 @@ const newScene = reactive({ }); const scenes = ref([]); +const host = window.location.hostname; +const port = 9500; +const baseURL = `http://${host}:${port}`; const quasarApi = axios.create({ - baseURL: `http://localhost:9500`, + baseURL: baseURL, timeout: 10000, headers: { 'Content-Type': 'application/json', @@ -150,7 +153,9 @@ onMounted(() => { scenes.value = resp.data; } }) - .catch((err) => NotifyResponse($q, err.response.data.error, 'error')); + .catch((err) => { + NotifyResponse($q, err.response.data.error, 'error'); + }); }); function removeScene(name: string) {