Как подключить мой носимый к серверу Node.js на Tizen? - PullRequest
1 голос
/ 08 ноября 2019

У меня проблема с доступом к определенному маршруту на сервере Node.js из носимого эмулятора с использованием Tizen.

Я пытался использовать оповещения, чтобы проверить, достигнута ли часть, где происходит связь (.open и .send) и, кажется, до них дошли отлично и ошибок не обнаружено. Я также удостоверился, чтобы добавить правильные привилегии и доступ.

        function postDataToServer() {
        var xmlHttp = new XMLHttpRequest();

        xmlHttp.onreadystatechange = function() {
            if (xmlHttp.readyState === 4) {
                if (xmlHttp.status === 200) {
                    alert("data posted successfully..");
                } else {

                }
            }
        };

        xmlHttp.open("PUT", "http://localhost:3004/read_watch",true);
        alert('hi');
        xmlHttp.send(null);
        }

Чего я должен ожидать, так это сообщения console.log на моем компиляторе, когда установлено соединение с read_watch.

1 Ответ

2 голосов
/ 11 ноября 2019

Я только что проверил ваш фрагмент кода на своем носимом эмуляторе Tizen с локальным сервером nodejs.

Моя среда разработки выглядит следующим образом:

  • Tizen Studio v3.3 для Windows7
  • Tizen v5.0 Носимый эмулятор на Windows7
  • сервер nodejs на Ubuntu 16.04.3 LTS

Ниже приведен файл config.xml с правами доступа в Интернет:

<?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/BasicXHR" version="1.0.0" viewmodes="maximized">
    <tizen:application id="lvdoC7pmtq.BasicXHR" package="lvdoC7pmtq" required_version="4.0"/>
    <content src="index.html"/>
    <feature name="http://tizen.org/feature/screen.size.all"/>
    <icon src="icon.png"/>
    <name>BasicXHR</name>
    <tizen:profile name="wearable"/>
    <tizen:privilege name="http://tizen.org/privilege/internet"/>
</widget>

Ниже приведен файл index.html, который содержит ваш код и работает на эмуляторе Tizen:

<!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="Tizen Wearable basic template generated by Samsung Wearable Web IDE"/>

    <title>Tizen Wearable Web IDE - Tizen Wearable - Tizen Wearable basic Application</title>

    <link rel="stylesheet" type="text/css" href="css/style.css"/>
    <script src="js/main.js"></script>
    <script>    
    function postDataToServer() {
        var xmlHttp = new XMLHttpRequest();
        xmlHttp.onreadystatechange = function() {
            if (xmlHttp.readyState === 4) {
                if (xmlHttp.status === 200) {
                    console.log("data posted successfully.." + xmlHttp.responseText);
                } else {
                    console.log("Error");
                }
            }
        };
        xmlHttp.open("PUT", "http://{My Ubuntu IP Address}:3004/read_watch",true);
        console.log('hi');
        xmlHttp.send(null);
    }
    postDataToServer();
    </script>
</head>

<body>
  <div class=contents>
    <div style='margin:auto;'>
        <span class=content_text id=textbox>Basic</span>
    </div>
  </div>
</body>
</html>

Ниже приведен мой фрагмент кода nodejs, который выполняется наСервер Ubuntu:

var http = require('http');
http.createServer(function (req, res) {
  if (req.url == '/read_watch') {
    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.write('<html><body><p>got message from Tizen</p></body></html>');
    res.end();
  }
}).listen(3004);

Следующие журналы на консоли Tizen Wearable Emulator:

file:///index.html (25) :hi
file:///index.html (18) :data posted successfully..<html><body><p>got message from Tizen</p></body></html>

С изменениями все работает нормально, как мы и ожидали. :)

Мне интересно, какую привилегию вы указали в config.xml и есть ли какие-либо проблемы с сетью.

...