怎么用nodejs搭建http服务器
1Nodejs安装包及源码下载地址为:https://nodejsorg/en/download/
Git下载地址为:https://git-scmcom/download/win。
2按照安装提示操作即可,选择安装路径、npm。
3环境变量默认C:\Users\Administrator\AppData\Roaming\npm\node_modules。
创建新的变量
创建方法:我的电脑>属性》高级系统设置》环境变量》,创建名NODE_PATH,值为nodejs的当前安装目录。
命令行工具是运行在当前计算机用户下的,所以开头总是C:/Users/XXX/Desktop>,而不会跟你的nodejs安装的位置有关。
安装node后,在cmd里有两种模式,开发模式和命令行模式,要进入开发模式直接输入node回车即可,此时可以输入代码,比如require ("express"),如果直接在命令行模式下输入require类的语句是会报错的,提示'require'不是内部或外部命令,也不是可运行的程序或批处理文件。从开发模式退出可用exit命令也可以用快捷捷,ctrl+D或两次ctrl+C
4创建应用
我们先创建一个项目目录,目录可自己定义,本案例的目录为 e:/node/serve。
由于我们要搭建的是服务器,所以我把第一个文件命名为serverjs。
在serverjs里面输入以下代码:
const http = require('http');//实例化“http”
const hostname = '127001';
const port = 3000;
const server = httpcreateServer((req, res) => {
resstatusCode = 200; //状态值200:OK
ressetHeader('Content-Type', 'text/plain'); //内容类型:text/plain
resend('Hello World\n'); //响应结果“hello world”
});
serverlisten(port, hostname, () => { //实现监听
consolelog(`Server running at http://${hostname}:${port}/`);
});
5应用执行
打开git命令行,输入cd e:/node/serve/
之后输入node servicejs
怎么编写网站的HTTP反向代理服务器在Nodejs上实现一个简单的HTTP代理程序还是非常简单的,本文章的例子的核心代码只有60多行,只要理解内置http模块的基本用法即可,具体请看下文。
接口设计与相关技术
使用httpcreateServer()创建的HTTP服务器,处理请求的函数格式一般为function(req,res){}(下文简称为requestHandler),其接收两个参数,分别为httpIncomingMessage和httpServerResponse对象,我们可以通过这两个对象来取得请求的所有信息并对它进行响应。
主流的NodejsWeb框架的中间件(比如connect)一般都有两种形式:
中间件不需要任何初始化参数,则其导出结果为一个requestHandler
中间件需要初始化参数,则其导出结果为中间件的初始化函数,执行该初始化函数时,传入一个options对象,执行后返回一个requestHandler
为了使代码更规范,在本文例子中,我们将反向代理程序设计成一个中间件的格式,并使用以上第二种接口形式:
//生成中间件
consthandler=reverseProxy({
//初始化参数,用于设置目标服务器列表
servers:["127001:3001","127001:3002","127001:3003"]
});
//可以直接在http模块中使用
constserver=httpcreateServer(handler);
//作为中间件在connect模块中使用
appuse(handler);
说明:
上面的代码中,reverseProxy是反向代理服务器中间件的初始化函数,它接受一个对象参数,servers是后端服务器地址列表,每个地址为IP地址:端口这样的格式
执行reverseProxy()后返回一个function(req,res){}这样的函数,用于处理HTTP请求,可作为httpcreateServer()和connect中间件的appuse()的处理函数
当接收到客户端请求时,按顺序循环从servers数组中取出一个服务器地址,将请求代理到这个地址的服务器上
服务器在接收到HTTP请求后,首先需要发起一个新的HTTP请求到要代理的目标服务器,可以使用httprequest()来发送请求:
constreq=httprequest(
{
hostname:"目标服务器地址",
port:"80",
path:"请求路径",
headers:{
"x-y-z":"请求头"
}
},
function(res){
//res为响应对象
consolelog(resstatusCode);
}
);
//如果有请求体需要发送,使用write()和end()
reqend();
要将客户端的请求体(Body部分,在POST、PUT这些请求时会有请求体)转发到另一个服务器上,可以使用Stream对象的pipe()方法,比如:
//req和res为客户端的请求和响应对象
//req2和res2为服务器发起的代理请求和响应对象
//将req收到的数据转发到req2
reqpipe(req2);
//将res2收到的数据转发到res
res2pipe(res);
说明:
req对象是一个ReadableStream(可读流),通过data事件来接收数据,当收到end事件时表示数据接收完毕
res对象是一个WritableStream(可写流),通过write()方法来输出数据,end()方法来结束输出。
以上就是小编对于怎么编写网站的HTTP反向代理服务器的解答。
服务器网站代理服务器写网站需要socket(套接字)编程、HTTP协议的知识,实现一个最简单的HTTP服务器,其实就是根据HTTP协议的通信规则来发送socket数据,往往是绑定(用bind调用)一个socket(套接字)然后监听(用listen调用)80端口,具体任何实现可以参考网上的一些简单的代码。之所以说这是最简单的HTTP服务器,是因为HTTP服务器还要处理并发、缓存等功能,更进一步还要支持某种动态脚本比如PHP的模块。
本Guide利用Eclipse及Ant建立简单Web Service演示Web Service基本发程:
1系统条件:
Eclipse Java EE IDE for Web Developers
Java SE 6
Windows XP
2基本环境搭建:
1)Java SE6 JDK安装:载Java SE6 JDK双击安装默认选项进行安装即
2)Eclipse安装与配置:
安装直接解压
配置处两点Window>Preferences>Java>Installed JREs确保设置:
安装路径能略同
Window>Preferences>Java>Compiler 确保设置:
3建立Server端工程相关包与类:
创建Java Project命名wsServerHelloWorld:
项目建立包:orggnuhpcwsServer
包边建立类:SayHello
SayHellojava文件输入代码:
package orggnuhpcwsServer;
import javaxjwsWebService;
@WebService
public class SayHello {
private static final String SALUTATION = "Hello";
public String getGreeting(String name) {
return SALUTATION + " " + name;
}
}
其注意@WebService 称作annotation或者metadataJava SE 5Web Services Metadata Specification引入Java SE 6于Web Services规范升级及JAX-WS(Java API for XML Web Services)20规范些升级使我Web Services创建调用变更加容易使用些新功能我仅仅使用简单Annotations注释Java类创建Web Services发者其类前用该annotations指定类告诉runtime engineWeb Service式操作使能该类annotations产布署Web ServiceWSDL映射annotationsJava源代码与代表Web ServiceWSDL元素连接起
4使用Ant产Server端代码:
首先项目新建文件:buildxml使用OpenWith>AntEditor打输入脚本代码:
<arg line="-cp /bin -keep -s /src -d /bin
orggnuhpcwsServerSayHello"/>
default指定默认执行Targetwsgen,wsgen创建能够使用WebService类所用于WebService发布源代码文件经编译二进制类文件WSDL符合规范该类WebService
Target名称wsgen具体执行命令参数:
-cp 类路径
-keep产java文件
-s 产源文件放哪
-d 产输问价放哪
使用Ant Build选项运行:
功执行提示我刷新Project
我Project区域看结:
5布Web Service
orggnuhpcwsServer建立类RunService:
package orggnuhpcwsServer;
import javaxxmlwsEndpoint;
public class RunService {
/
@paramargs
/
public static void main(String[] args) {
Systemoutprintln("SayHello Web Service started");
Endpointpublish("" ,
new SayHello());
}
}
运行Run As>Java Application我结说明web serviceServer端已经启
6查看WSDL:
Window>Show View>Other>General>Internal Web Browser其输入:wsdl
看看底WSDL都记录哪些信息看完停止该Server
7监测Server
我创建完Server用Eclipse Web Services Explorer监测Server
Window>Open Perspective>Other >JavaEE
打Eclipse Web Services Explorer
点击右角WSDL Page按钮:
单击WSDL MainURL输入:wsdl 按Go按钮现视图:
我触发Web Service操作:点击getGreetings添加参数比gnuhpc点击Go按钮:
8创建Client端 工程相关包与类:
创建Java Project命名wsClientHelloWorld项目建立包:orggnuhpcwsClient
9使用Ant产Client代码框架:
编写Web service使用工具利用WSDL进行调用客户端桩;或者使用底层API手编写Web service前者便者灵现我通前者做说明:
新建文件buildxml
New>File>buildxml
<arg line="-keep -s /src -p orggnuhpcwsClient
-d /bin wsdl"/>
注意:wsgen 支持 Java class 创建 Web serviceswsimport 支持 WSDL 创建 Web services别应于 JAX-RPC 式 Java2WSDL WSDL2Java要根据发布WSDL进行创建要先运行RunServer原
运行ServerRunService : Run As>Java Application>
运行该Ant脚本产Client代码:Run As>Ant Build
运行功提示:
代码:
步读取WSDL并客户端桩些桩我代码所用Java类接口些桩给服务器端功能提供客户端接口例我服务器提供Maths服务该服务带叫做add我客户端代码调用桩桩实现该使用参数封装Java调用变Webservice请求请求基于HTTP发送给服务器且使用SOAP作RPC协议监听服务器接收该SOAP消息(十八九)其转换服务器处调用
0条评论