PhantomJS - Web 服务器模块方法


在本章中,我们将讨论 PhantomJS Web 服务器模块的各种方法。

关闭

close方法用于关闭网络服务器。

句法

其语法如下 -

var server = require('webserver').create();
server.close();

例子

以下示例展示了如何使用close方法。

var webserver = require('webserver');
var server = webserver.create();
var service = server.listen(8080,function(request,response){
});

if(service) console.log("server started - http://localhost:" + server.port);
console.log(server.port);
server.close();
console.log(server.port);

上述程序生成以下输出

server started - http://localhost:8080 
8080

在这里,我们在关闭服务器后对server.port进行了控制台操作。因此,它不会响应,因为网络服务器已经关闭。

server.listen方法采用带有两个参数的端口和回调函数,即请求对象响应对象

请求对象包含以下属性 -

  • 方法- 这定义了方法 GET /POST。

  • URL - 显示请求的 URL。

  • httpVersion - 显示实际的 http 版本。

  • headers - 这显示所有带有键值对的标题。

  • Post - 请求正文仅适用于 post 方法。

  • postRaw - 如果 Content-Type 标头设置为“application/x-www-formurlencoded”,则帖子的原始内容将存储在这个额外的属性(postRaw)中,然后该帖子将使用 URL 解码自动更新数据的版本。

响应对象包含以下属性 -

  • headers - 将所有 HTTP 标头作为键值对。应在第一次调用 write 之前设置。

  • SetHeader - 这设置一个特定的标头。

  • 标头(名称) - 它返回给定标头的值。

  • StatusCode - 它设置返回的 HTTP 状态代码。

  • SetEncoding (encoding) - 用于转换给 write() 的数据。默认情况下,数据将转换为 UTF-8。如果数据是二进制字符串,则指示“二进制”。如果数据是缓冲区(例如来自 page.renderBuffer),则不需要。

  • Write (data) - 它发送响应主体的数据。可以多次调用。

  • WriteHead (statusCode, headers) - 它向请求发送响应标头。状态代码是 3 位 HTTP 状态代码(例如 404)。最后的参数和标头是响应标头。

  • Close - 它关闭 http 连接。

  • CloseGraceously - 它与 close() 类似,但它确保首先发送响应标头。

句法

其语法如下 -

var server = require('webserver').create(); 
var listening = server.listen(8080, function (request, response) {} 

例子

让我们通过一个例子来了解listen方法是如何工作的。

var page = require('webpage').create(); 
var server = require('webserver').create(); 
var port = 8080; 
var listening = server.listen(8080, function (request, response) { 
   console.log("GOT HTTP REQUEST"); 
   console.log(JSON.stringify(request, null, 4)); 
   
   // we set the headers here 
   response.statusCode = 200; 
   response.headers = {"Cache": "no-cache", "Content-Type": "text/html"};  
 
   // the headers above will now be sent implictly 
   // now we write the body 
   response.write("<html><head><title>Welcone to Phantomjs</title></head>"); 
   response.write("<body><p>Hello World</p></body></html>"); 
   response.close(); 
}); 

if (!listening) { 
   console.log("could not create web server listening on port " + port); 
   phantom.exit(); 
} 

var url = "http://localhost:" + port + "/foo/response.php"; 
console.log("sending request to :" +url); 
page.open(url, function (status) { 
   if (status !== 'success') { 
      console.log('page not opening'); 
   } else { 
      console.log("Getting response from the server:"); 
      console.log(page.content); 
   } 
   
   phantom.exit(); 
});

上述程序生成以下输出

sending request to :http://localhost:8080/foo/response.php 
GOT HTTP REQUEST { 
   "headers": {
      "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 
      "Accept-Encoding": "gzip, deflate", 
      "Accept-Language": "en-IN,*", 
      "Connection": "Keep-Alive", 
      "Host": "localhost:8080", 
      "User-Agent": "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/538.1 
         (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1" 
   }, 
   "httpVersion": "1.1", 
   "method": "GET", 
   "url": "/foo/response.php" 
} 
Getting response from the server: 
<html><head><title>Welcone to Phantomjs</title></head><body><p>Hello World</p></body>
</html>