嗯,这里有关于websockets的信息.技术本身是惊人的,这一点毫无疑问.在我开始在我的应用程序中使用它们之前,我只想让社区回答以下问题:
"...为了保持存在,应用程序可以在WebSocket上发送保持活动的消息,以防止它因空闲超时而被关闭......"
"...理想情况下,WebSocket的未来版本将支持超时发现,因此它可以告诉应用程序保持活动消息的时间......"
感觉就像似曾相识.之前我们不得不一次轮询服务器%period_time%以获取所需的更新信息.对于websockets,我们必须使用keep-alive消息在%period_time%上轮询websocket服务器,以确保Internet连接仍处于活动状态/ websocket服务器仍在工作.有什么好处?
关于这些保持活跃的消息还有另外一件事.Websocket协议的优点是使用比HTTP(S)更少的流量.如果我们发送保持活跃的消息,似乎流量优势消失了.或者可能不是?
如果我使用websockets,我应该如何处理我的应用程序中的互联网丢失?我的意思是当互联网连接突然丢失时的真实情况(我的意思是没有发生"navigator.offline"事件).我应该使用某种setTimeout函数来查找保持活动消息,还是有更好的方法来处理这种情况?
REST让我们清楚地了解应用程序应该如何工作以及请求应该如何.在websocket驱动的应用程序中执行此操作的最佳方法是什么?我应该用request.action字段(例如)JSON编码的消息吗?应用程序应该如何执行PUT请求?REST模型中有URL资源来处理这个问题,所以我应该使用这些方法的组合,还是可以简化?
据我所知,websockets支持二进制数据传输.二进制支持错误是固定的.
那么,是否有支持二进制数据传输的websocket服务器?Socket.io似乎错过了这个机会.也许还有其他一些?
我有一个应用程序,在按钮单击后调用web worker.计算将移至工作人员以缓解UI并使其在进行计算时响应用户操作.
一切顺利,大约0.8-1.5秒之后工人发出回应.在worker.onmessage中,我执行所有需要的DOM操作.但是在此GC出现之后,根据CPU的不同,实际上会阻止UI 2秒或更长时间.这真让我感到困惑,因为UI阻塞是我想要阻止的.
以下是时间轴/内存控制台选项卡的屏幕截图:http://i.imgur.com/zUoHa.jpg
正如您所看到的,GC事件恰好在所有DOM操作之后发生.实际上只有一个重绘事件(使用DocumentFragment).
主要的js代码:
var sortWorker = new Worker('js/contactsorter.js');
sortWorker.onmessage = function(e) {
var messages = [];
e.data.forEach(function(userDoc) {
var contactSection = _drawContact(userDoc);
messages.push(contactSection);
});
meta.append(messages); // this actually appends document fragment as a child
};
sortWorker.postMessage(postMessageData);
Run Code Online (Sandbox Code Playgroud)
contactsorter.js(worker):
onmessage = function(e) {
var uid, output = [], usersStat = {};
// calculations...
postMessage(output);
close();
};
Run Code Online (Sandbox Code Playgroud)
有没有办法在这个地方避免这些GC事件?
UPD:在我看来,GC事件的时间取决于发送给工人的数据量.UPD2:关闭和启动后GC事件只发生两次,从而阻止UI不到一秒钟.嗯?
javascript html5 garbage-collection javascript-events web-worker
我有BlobBuilder(Chrome11)的问题我尝试从服务器获取XHR请求的图像.然后我尝试使用BlobBuilder/FileWriter将其保存到本地FS.互联网上的每个例子都是关于使用text/plain mime类型,这些例子工作得很好.但是当我尝试编写使用XHR获得的二进制数据时,文件大小变为原始文件大小的1.5-2倍.它无法在Picasa/Eye of Gnome中查看.
var xhr = new XMLHttpRequest();
var photoOrigUrl = 'http://www.google.ru/images/nav_logo72.png';
xhr.open('GET', photoOrigUrl, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var contentType = xhr.getResponseHeader('Content-type');
fsLink.root.getFile('nav_logo72.png', {'create': true}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
var BlobBuilderObj = new (window.BlobBuilder || window.WebKitBlobBuilder)();
BlobBuilderObj.append(xhr.responseText);
fileWriter.write(BlobBuilderObj.getBlob(contentType));
}, function(resultError) {
console.log('writing file to file system failed ( code ' + resultError.code + ')');
});
});
}
}
xhr.send();
Run Code Online (Sandbox Code Playgroud)
fsLink存在,这是扩展.
chrome.windows API讲述了5种窗口类型:"normal","popup","panel","app","shell".
但是其他3种窗口类型是什么?官方API提供的信息非常少这个
我希望我的节点应用程序连续运行.我确信在应用程序工作期间可能会出现一些崩溃.现在我可以看到3种让应用程序连续工作的方法:
问题是:这三种方式中哪一种更好用.在我看来,这个问题没有确切的答案,所以欢迎任何评论.
在我看来,第一个更合适,因为节点进程内存消耗不会随着时间而增长 - 每次节点进程崩溃永远都会启动另一个.
我正在尝试使用chrome.identity.getAuthToken()来获取Picasa网络服务的令牌.我在Google Developer Console中找不到Picasa API,并将其范围设置为manifest.json的" https://picasaweb.google.com/data/"oauth2部分.Picasa文档说我可以跳过此步骤.
chrome.identity.getAuthToken({
interactive: true
}, function (token) {
if (chrome.runtime.lastError) {
console.error(chrome.runtime.lastError);
} else {
console.log(token);
}
});
Run Code Online (Sandbox Code Playgroud)
getAuthToken()始终以错误"OAuth2请求失败:服务响应错误:'错误的客户端ID:{0}'"结束.如果未设置范围,则错误看起来像"OAuth2请求失败".我哪里弄错了?
picasa google-chrome-extension google-oauth google-chrome-app
我有一个简单的页面,包括头部,菜单,内容和页脚.我需要将它们分成单独的文件.阅读快递文档后我(创建了4个模板)写了这样的东西:
app.get('/', function(req, res) {
var response = [null, null, null, null]
, everyNotNull = function(elem) {
return (elem !== null);
}, sendResponse = function(type, str) {
switch (type) {
case 'head' : response[0] = str; break;
case 'menu' : response[1] = str; break;
case 'content' : response[2] = str; break;
case 'footer' : response[3] = str; break;
}
if (response.every(everyNotNull)) {
res.send(response.join(''));
}
};
res.partial('head', {'title' : 'page title'}, function(err, str) {
sendResponse('head', str);
});
res.partial('menu', {'active' : '/'}, …
Run Code Online (Sandbox Code Playgroud) CouchDB提供了从startkey搜索值的机会,确切的键值对等.但是有没有办法在指定的字段中搜索子字符串?
问题是这样的.我们的新闻数据库包含大约40,000个新闻文件.再说,他们有title
,content
而且url
领域.我们想找到有"餐馆"的新闻文件title
.有什么办法吗?
查看排序规则维基页面没有任何说明:(对我来说似乎很奇怪,没有工具可以解决这个问题,我只能用Python,PHP或其他方式解析JSON结果.在MySQL中它只是LOCATE()函数. .
javascript ×7
html5 ×4
node.js ×3
websocket ×2
blob ×1
couchdb ×1
ecmascript-6 ×1
ejs ×1
express ×1
forever ×1
google-oauth ×1
long-polling ×1
picasa ×1
socket.io ×1
weakmap ×1
web-worker ×1