发布于 2015-08-23 03:28:40 | 939 次阅读 | 评论: 0 | 来源: PHPERZ
Web Server模块
phantomjs支持一个简单的web server模块, require('webserver')即可引入。web server模块基于mongoose。不过最好不要在生产环境使用这样的服务器模块,因为现阶段此模块仅允许10个并发请求。
看一个简单的例子吧:
var webserver = require('webserver');
var server = webserver.create();
var service = server.listen(8080, function(request, response) {
response.statusCode = 200;
response.write('<html><body>Hello!</body></html>')
response.close();
});
首先需要创建服务器实例,然后调用 listen()方法监听, listen()方法的第一个参数可以为一个端口号,也可以中 ip:port这样的ip+port组合方式。第二个参数是处理请求的回调方法。下面描述一下 request和 response两个对象。
- request:
- method:http请求的方法,get、post等
- url: 包含http请求URL和get请求的query string(如果有的话)
- httpVersion:当前采用的http协议的版本
- headers:所有http请求头部信息,以键值对的形式提供
- post:请求主体,仅对post和put方法的请求有效
- postRaw:如果Content-type为 'application/x-www-form-urlencoded'(表单上传的默认值)时,post的原始信息会暂存在此属性中。
- response:
- headers:以键值对的形式保存所有的HTTP请求头部的信息,在第一次调用 write()方法前一定要设置
- setHeader(name, value):设置或添加特定的头部信息
- header(name):获取特定的头部信息
- statusCode:设置HTTP状态码
- setEncoding(encoding): 标明传给 write()的数据需要转换成什么格式,默认为UTF-8。如果数据为二进制字符串,则设置为“binary”
- write(data):向response中发送数据块,可以多次调用
- writeHead(statusCode, headers):向response中发送响应头部。 statusCode是一个3位数字,表示HTTP状态码(如404)。后一个参数代码响应头部
- close():关闭HTTP连接
- 为了避免客户端检测到连接中断,记得最后再用 write()方法发送一个空字符串(如: response.write(""))。
- closeGracefully():功能与 close()一样,不过更安全可靠,它能保证响应头部先发送,并自动在响应最后加上 response.write("")