使用网桥获取随 PhantomJS 返回的状态代码
Get status code returned with PhantomJS using a bridge
我正在创建一个小的 API 来监控我的一些网站的性能。为此,我想要加载时间和http状态代码。我正在使用节点js和phatomjs来执行此操作,到目前为止,我的加载时间恰到好处,但是我似乎无法取回状态代码。我尝试了一些不同的东西,但到目前为止都没有奏效。
这是我现在的代码:
var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.type('application/json');
res.send('{"status": "running"}');
});
app.get('/site/:url', function(req, res){
res.type('application/json');
res.header('Access-Control-Allow-Origin', '*');
res.header('Cache-Control', 'no-cache');
var url = decodeURIComponent(req.param('url'));
var phantom = require('phantom');
var time, code;
phantom.create(function(ph){
ph.createPage(function(page){
time = Date.now();
page.open(url, function(status){
time = Date.now() - time;
res.send({"status": status, "time": time});
});
});
});
});
var server = app.listen(80, function() {
var host = server.address().address;
var port = server.address().port;
console.log('Got''cha .. ', host, port);
});
我已经尝试了 http://phantomjs.org/api/webpage/handler/on-resource-received.html 但我似乎看不到我可以在哪里调用它,以便我可以将其与其他数据一起返回。到目前为止,我得到了这样的东西{"status":"success","time":1723}
.
有人知道我能做什么吗?
您说得对,onResourceReceived
提供了实际的状态代码。如功能详细信息所示,您必须使用 page.set
设置事件处理程序。
您可以假设onResourceReceived
在页面open
回调之前执行:
var statusCode = null;
page.set('onResourceReceived', function(resource){
statusCode = resource.status;
});
page.open(url, function(status){
time = Date.now() - time;
res.send({"status": statusCode, "time": time});
});
如果你不能确定(你应该做一些测试),那么你可以使用类似 waitFor
从这里:
var statusCode = null;
page.set('onResourceReceived', function(resource){
statusCode = resource.status;
});
page.open(url, function(status){
waitFor(function(){
return !!statusCode;
}, function(){
time = Date.now() - time;
res.send({"status": statusCode, "time": time});
});
});
相关文章:
- 角度$http返回状态 0
- 如何使用 iframe.src 下载文件时获取返回状态代码
- $q.all 返回状态而不是值 - 为什么
- Redux 的 .getState() 不应该返回状态对象的副本
- 正在进行中的 Ajax 请求突然开始返回状态 = 0
- 我可以只返回状态对象的一部分而不是整个状态对象的新副本吗
- phonegap+iOS,http请求在本地文件上总是返回状态0
- 发送Json对象时,XMLHttpRequest返回状态0
- 如何在Node.js中从函数返回状态码
- 我所有的跨域调用都返回状态0
- JSON PUT返回状态码400
- 尝试使用韦氏词典API返回的XML,但请求失败.返回状态为0.该怎么做
- XHR上传在firefox中返回状态0
- HTML4和HTML5 -如果没有导航,我怎么知道是否有一个“返回”状态
- XMLHttpRequest异步不工作,总是返回状态0
- Ionic如何以编程方式返回状态
- AngularJS post返回状态码304,而不是post到play后端
- IE11在iFrame的Ajax POST操作期间返回状态0 (XMLHttpRequest: Network Erro
- HTTPXmlRequest返回状态为0的空响应文本
- 将图像从移动web应用程序(PhoneGap&JavaScript)上载到SOAP web服务返回状态0