gpt4 book ai didi

javascript - 有什么方法可以让 LG WebOS 服务保持活力吗?

转载 作者:行者123 更新时间:2023-11-30 15:03:31 26 4
gpt4 key购买 nike

我正在尝试创建一个 JS service WebOS 3.0 遵循官方文档。

我可以在 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()
})

最佳答案

我最近为 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);

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

之后,就是对返回的数据进行处理和格式化。

关于javascript - 有什么方法可以让 LG WebOS 服务保持活力吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46147241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com