Tizen Socket.io 连接仅适用于 5.0

问题描述

所以我遇到了一个问题,我的应用程序只能在 5.0 模拟器上运行。 我已经在 4.0 - 5.0 - 5.5 - 和 6.0 上测试了该应用。

该项目最初是在 5.0 上创建的,但后来我在 v 4.0 上重新做了它,但仍然存在同样的问题。

我认为它与套接字连接有关,但为什么它只适用于 5.0? 我在测试时所做的改变就是选择不同的模拟器版本。

索引

<!DOCTYPE html>
<html>
<head>
    <Meta charset="utf-8" />
    <Meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0">
    <Meta name="description" content="Scheduled-countdown"/>

    <title>Scheduled-countdown</title>

    <link rel="stylesheet" type="text/css" href="css/style.css"/>     
</head>

<body>
  <div class=container>
    
    
    <div class=centerContainer>
        <div id=ipInput style="height:100%">
<!--            Storage key:
           <input type="text" id="storageKey" style="width: 50px"/> -->
           ipadress:
           <input type="text" id="storageData" style="width: 50%"/>
           <input type="button" id="save" value="SAVE" onclick="addStorage(); return false;"/>
           <h1 id="ipadress">No Save ipadress</h1>
        </div>
        
        
        
        <div id="currentTime"></div>
        <div id="title"></div>
        <div id="time"></div>
    </div>
  </div>  

</body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js"></script>
    <script>
          let countDownBool;
          let bgColor;
    
        var ipadress = localStorage.getItem(localStorage.key("ipadress"))
        console.log(ipadress)
        var ipString = `http://192.168.8.124:3000`
        console.log(ipString)
        ipadress.textContent = localStorage.getItem(localStorage.key("ipadress"))
        
        
        const socket = io(ipString,{path: '/ws',});
        
        
        socket.on('connect',() => {
            console.log('SocketConnected!');
            document.getElementById("ipInput").style.display = "none";
            
            
        });
        
        socket.on('message',(data) => {
            const { type,message } = data;
            //console.log(type);
            
            if (type == "currentTime") {
                document.getElementById("currentTime").textContent = message;
                
                if (countDownBool){
                    //style.display = "block"; style.display = "none";
                    document.getElementById("currentTime").style.display = "none";
                    document.getElementById("title").style.display = "block";
                    document.getElementById("time").style.display = "block";
                    
                }else{
                    document.getElementById("currentTime").style.display = "block";
                    document.getElementById("title").style.display = "none";
                    document.getElementById("time").style.display = "none";
                }
                //console.log("currentTime");
                
            }
            
            if (type == "countDown") {
                document.getElementById("title").textContent = message.title;
                document.getElementById("time").textContent = message.time;
                
                if(message.bool){
                    countDownBool = true;
                    
                    
                    if (message.countDownTimeInMS > (-3*60000) && message.countDownTimeInMS < 0) {
                        bgColor = message.colors.countDownColor;
                    }else if(message.countDownTimeInMS > 0){
                        bgColor = message.colors.countUpColor;
                    }
                    
                    //-------------------
                      if(message.countDownTimeInMS > (-5*60000) && message.countDownTimeInMS < (-5*60000+1000)){
                      console.log("Vibrate 5");
                        navigator.vibrate([100,100,100]);
                      }
                      if(message.countDownTimeInMS > (-4*60000) && message.countDownTimeInMS < (-4*60000+1000)){
                      console.log("Vibrate 4");
                        navigator.vibrate([100,100]);
                      }
                      if(message.countDownTimeInMS > (-3*60000) && message.countDownTimeInMS < (-3*60000+1000)){
                      console.log("Vibrate 3");
                         navigator.vibrate([100,100]);
                      }
                      if(message.countDownTimeInMS > (-2*60000) && message.countDownTimeInMS < (-2*60000+1000)){
                      console.log("Vibrate 2");
                         navigator.vibrate([100,100]);
                      }
                      if(message.countDownTimeInMS > (-1*60000) && message.countDownTimeInMS < (-1*60000+1000)){
                      console.log("Vibrate 1");
                         navigator.vibrate([100,100]);
                      }
                      if(message.countDownTimeInMS > (0) && message.countDownTimeInMS < (0+1000)){
                      console.log("Vibrate START");
                         navigator.vibrate([1000,1000,100]);
                      }
                    //-------------------
                    
                }else{
                    countDownBool = false;
                    document.body.style.backgroundColor = "2b2b2b";
                }
    
            }
        });
        
    </script>
    
    <script>
        function addStorage() {
            //var key = document.getElementById('storageKey');
            var key = "ipadress";
            var data = document.getElementById('storageData');
            
    
            /* Set the local storage item */
            if ('localStorage' in window) {
                localStorage.setItem(key.value,data.value);
                location.reload();
            } else {
                alert('no localStorage in window');
            }
    
            /* Set the session storage item */
            if ('sessionStorage' in window) {
                sessionStorage.setItem(key.value,data.value);
                location.reload();
            } else {
                alert('no sessionStorage in window');
            }
        }
    </script>

</html>

配置

S<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/ScheduledCountdownTizen4" version="1.0.0" viewmodes="maximized">
    <access origin="https://cdnjs.cloudflare.com" subdomains="true"/>
    <tizen:application id="YGGUZsElLs.ScheduledCountdownTizen4" package="YGGUZsElLs" required_version="4.0"/>
    <author href="https://github.com/mattehalen/Scheduled-countdown" email="matte_halen@hotmail.com">Mathias Halén</author>
    <tizen:background-category value="background-network"/>
    <content src="index.html"/>
    <feature name="http://tizen.org/feature/screen.size.all"/>
    <icon src="icon.png"/>
    <name>ScheduledCountdownTizen4</name>
    <tizen:privilege name="http://tizen.org/privilege/internet"/>
    <tizen:profile name="wearable"/>
    <tizen:setting background-support="enable" encryption="disable" hwkey-event="enable"/>
</widget>

解决方法

问题似乎出在您的访问来源上。
<access origin="https://cdnjs.cloudflare.com" subdomains="true"/>
您应该将访问源修改为 IP 字符串 (192.168.8.124)
<access origin="192.168.8.124:3000" subdomains="true"/>
或者让它*
<access origin="*" subdomains="true"/>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...