美文网首页
nodejs创建web服务器和Tcp服务器

nodejs创建web服务器和Tcp服务器

作者: 来了啊小老弟 | 来源:发表于2020-01-06 18:22 被阅读0次

使用http模块创建Web服务器

Web服务器的功能:

  • 接受HTTP请求(GET、POST、DELETE、PUT、PATCH)
  • 处理HTTP请求(自己处理,或请求别的程序处理)
  • 做出响应(返回页面、文件、各类数据等)

常见的Web服务器架构:

  • Nginx、Apache:负责接受HTTP请求,确定谁来处理请求,并返回请求的结果
  • php-fpm / php模块:处理分配给自己的请求,并将处理结果返回给分配者

常见请求种类:

  • 请求文件:包括静态文件(网页、图片、前端JavaScript文件、css文件...),及由程序处理得到的文件
  • 完成特定的操作:如登录、获取特定数据等

Node.js的Web服务器:

不依赖其他特定的Web服务器软件(如Apache、Nginx、IIS......)

  • Node.js代码处理请求的逻辑
  • Node.js代码负责Web服务器的各种“配置”

使用Express创建Web服务器

  • 简单的Express服务器
  • 静态文件服务
  • 路由
  • 中间件

简单的Express服务器:

var express = require('express');
var morgan = require('morgan'); //打印日志
var app = express();

// path方法  比较简单
app.use(express.static('./public'))
app.use(morgan())
app.get('/',(req,res,next)=>{
  res.end('hello');
  next(); // 进行下一步,打印日志 
})

//Router方法 适合某一个模块下的多个子路由
var Router = express.Router();
Router.get('/add',(req,res)=>{
  res.end('add')
})
Router.get('/list',(req,res)=>{
  res.end('list')
})
app.use('/post', Router)

//route方法  适合restful API
app.route('/article')
  .get((req,res)=>{
    res.end('/article get')
  })
  .post((req,res)=>{
    res.end('/article post')
  })

app.param('newsId', (req, res, next, newsId)=>{
  req.newsId = newsId;
  next();
})  

app.get('/news/:newsId', (req, res)=>{
  req.end('newsId:' + req.newsId);
})    

app.listen(18001, function afterLister(){
  console.log('服务再次启动')
})

创建TCP服务器

  • 使用net模块创建TCP服务器
  • 使用telnet连接TCP服务器
  • 使用net创建TCP客户端
    tcp.js:
var net = require('net')

const PORT = 18001;
const HOST = '127.0.0.1';

var clientServer = function(socket){
  console.log('comeone connected')
  socket.on('data',(data)=>{
    console.log(socket.remoteAddress, socket.remotePort, data.toString())
    socket.write('服务端write')
  })

  socket.on('close',()=>{
    console.log(socket.remoteAddress, socket.remotePort,'disconnected')
  })
}
var app = net.createServer(clientServer)

app.listen(PORT,HOST,'',function(){
  console.log('监听启动:'+HOST+':'+PORT)
  console.log('监听成功')
})

tcpClient.js:

var net = require('net')

const PORT = 18001;
const HOST = '127.0.0.1';

var tcpClient = net.Socket();
tcpClient.connect(PORT, HOST, function(){
  console.log('客户端发送信息成功打印')
  tcpClient.write('客户端发送信息成功')
});

tcpClient.on('data',(data)=>{
  console.log( data.toString())
})

相关文章

网友评论

      本文标题:nodejs创建web服务器和Tcp服务器

      本文链接:https://www.haomeiwen.com/subject/khukactx.html