2017-09-11 9 views
0

WebOS 3.0でJS serviceを作成しようとしていますが、公式の文書に従っています。LG WebOSサービスを有効に保つ方法はありますか?

私はJSサービスと私のアプリケーションの間でデータを送信できますが、JSサービスが20秒間アイドル状態になってもリクエストに応答しないことがあります。私もタイムアウトを増やそうとしましたper this。残念ながら、それは動作していないようです。

はここに私のコードです

アプリケーション側

const request = webOS.service.request('luna://com.myapp.service', { 
     method : 'fetch', 
     parameters : { url, method, headers, body }, 
     onFailure : (err) => { 
      reject(err) 
     }, 
     onSuccess : (s) => { 
      console.log('request success', s) 
     }, 
     onComplete : (resp) => { 
      const isSuccess = resp.data.status >= 200 && resp.data.status < 400 
      var payload = { 
      json :() => Promise.resolve(JSON.parse(resp.data.body)), 
      ok : isSuccess, 
      headers : resp.data.headers, 
      status : resp.data.status, 
      error : isSuccess 
       ? null 
       : resp.data.body 
      } 
      resolve(payload) 
     } 
     }) 
    }) 

サービスサイド

var Service = require('webos-service') 
var service = new Service('com.myapp.service') 

service.register('fetch', function(message) { 
var payload = message.payload 
    if(!payload) { 
    message.respond({ 
     returnValue : true, 
     error : 'Message does not have a `payload`' 
    }) 
    return 
    } 
    var url = payload.url, 
     headers = payload.headers, 
     method = payload.method, 
     body = payload.body 
    var request = http.request({ 
    method : method, 
    hostname : URL.parse(url).hostname, 
    path : URL.parse(url).path, 
    headers : headers, 
    }, function(res) { 
    var data = '' 
    res.on('data', function(chunk) { data+=chunk }) 
    res.on('end', function() { 
     message.respond({ 
     returnValue : true, 
     data : { 
      status : res.statusCode, 
      statusText : res.statusMessage, 
      headers : res.headers, 
      body : data, 
     } 
     }) 
    }) 
    }) 
    request.on('error', function(err) { 
    console.log(err) 
    message.respond({ 
     returnValue : true, 
     error : err 
    }) 
    }) 
    request.end() 
}) 

答えて

0

は、私は最近、LGスマートテレビのためのJavaScriptアプリケーションを書いて、非常にを使用することをお勧めしますsocket.ioクライアントとサーバー間のすべての通信に適用されます。 最初はうまくやっていますが、問題なく動作します。

は、ここではすべての処理の問題と返されたデータをフォーマットだ、その後

var socket = io("http://10.27.101.95"); 
    idUser = getCookie("idUser"); // Retrieved from device and set to cookie. 

// ┌────────────────────────────────────────────────────────────────┐ 
// │ Socket.io: Connect/Emit          │ 

    socket.on('connect', function() { 
     socket.emit("addUser", { 
      "idUser": idUser 
     }); 
     reconnectHideData = false; 
    }); 

    // Hide data if server cannot be reached. 
    var reconnectCount = 0; 
    var reconnectHideData = false; 
    socket.on('reconnect_error', function() { 
     if (reconnectCount < 10 && reconnectHideData == false) { 
      // console.log('---=== Reconnect attempt: ' + reconnectCount + ' ===---'); 
      setTimeout(function(){ 
       reconnectCount++; 
      }, 3000); 
     } 
     if (reconnectCount == 10 && reconnectHideData == false) { 
      // console.log('-----===== Cleared Data =====-----'); 
      $('.section ').addClass(' u-hide '); 
      $('.greeting').addClass(' u-hide '); 
      reconnectHideData = true; 
      reconnectCount = 0; 
     } 
     else { 
      return; 
     } 
    }); 

    // Necessary to trigger event to be emitted server side. 
    setInterval(function(){ 
     socket.emit("reqData"); 
    }, 5000); 

// └────────────────────────────────────────────────────────────────┘ 

...接続がどのように見えるかです。

関連する問題