第三章全栈基石node js3节网络编程网路https http2websocket_第1页
第三章全栈基石node js3节网络编程网路https http2websocket_第2页
第三章全栈基石node js3节网络编程网路https http2websocket_第3页
第三章全栈基石node js3节网络编程网路https http2websocket_第4页
第三章全栈基石node js3节网络编程网路https http2websocket_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

掌握http了解https->安全了解原理:Net模块提供一个异步AP能够创建基于流的CP服务器,客户端与服务器建立连接后,服务器可以获得一个全双工Socet对象,服务器可以保存Sckt对象列表,在接收某客户端消息时,推送给其他客户端。////constnet=constchatServer=net.createServer() List=[] .on('data',data=>{List.forEach(v=>{通 netnetlocalhostHTTP协议(25:55-////观察HTTPcurl-vhttp////consthttp=require("http");constfs=require("fs");.createServer((req,res){const{method,url}=if(method=="GET"&&url=={fs.readFile("./index.html",(err,data)=>{res.setHeader("Content-Type","text/html");}elseif(method=="GET"&&url=={res.setHeader("Content-Type",res.end(JSON.stringify([{name:"tom",age:20}constconstimg=newImage()constresconstres=awaitaxios.get("/api/users") n(`Response://<script(async()=>constexpress=require('express')constapp=express()app.use(express.static(dirname+'/'))module.exports=////constapi=require('./api') =require('./ ////或者通过baseURLaxios.defaults.baseURL='////axios.defaults.baseURL=前端构造script请求指定URL(由script发出的GET请求不受同源策略限制),服务器返json数据。该函数端执行后即可获取数据。 CORS(CrossOriginResourceShare跨域资源共享,后端方案,解决跨域 原理:原理:cors是w3c规范,真正意义上解决跨域问题。它需要服务器对请求进行检查并对响应头做相应处理,从而允许跨域请求。响应简单请求:动词为get/post/head,没有自定义请求头,Content-Type是application/x-www- resres.setHeader('Access-Control-Allow-Origin', elseelseif(method=="OPTIONS"&&url=={res.writeHead(200,"Access-Control-Allow-Origin":" "Access-Control-Allow-Headers":"X-Token,Content-Type","Access-Control-Allow-Methods":"PUT"}//index.html//index.html//http-",{foo:'bar'},elseif((method=="GET"||method=="POST")&&url=="/users")如果要携 //////预检options中和/usersres.setHeader('Access-Control-Allow-Credentials',// ', ////观 //ajax)axios.defaults.withCredentials=模式(89:20-varvarexpress= = -constapp=express()app.use(express.static(dirname+'/'))module.exports=({target:',changeOrigin:对比一下nginx与wck//vue.config.js//vue.config.js{disableHostCheck:true,compress:true,port:5000,:'/api/':{target:changeOrigin:}serverserver #server_namelocation/location/ indexindex.htmlindex.htm;try_files$uri$uri//index.html;}location/api};X-Real-X-Forwarded-$}application/x-www-form-<form<formaction="/api/save"<inputtype="text"name="abc"<inputtype="submit"//elseif(method==="POST"&&url==={letreqData=[];letsize=0;req.on('data',data=>{console.log('>>>reqon',data);size+=req.on('end',function{constdata=Buffer.concat(reqData,size);console.log('data:',size,data.toString())}awaitawaitaxios.post("/api/save",{a:1,b://模拟application/x-www-form-urlencodedawaitaxios//模拟application/x-www-form-urlencodedawaitaxios.post("/api/save",'a=1&b=3',{headers:'Content-Type':'application/x-www-form-//Streampipe//Streampipe//Bufferconnectrequest.on('data',data=>{size+=data.lengthconsole.log('data:',datarequest.on('end',()=>constbuffer=Buffer.concat(chunk,size)size=0// 写request.on('data',datarequest.on('end',(){fis.end()实战一个爬虫(121:20-////constoriginRequest=require("request");constcheerio=require("cheerio");consticonv=require("iconv-lite");functionrequest(url,callback)constoptionsconstoptions{url:url,encoding:nulloriginRequest(url,}for(leti=100553;i<100563;i++)consturl=`http request(url,function(err,res,body){consthtml=iconv.decode(body,"gb2312");const$=cheerio.load(html);console.log($(".title_allh1").text());}原理:Net模块提供一个异步AP能够创建基于流的CP服务器,客户端与服务器建立连接后,服务器可以获得一个全双工Socet对象,服务器可以保存Sckt对象列表,在接收某客户端消息时,推送给其他客户端。////constnet=constchatServer=net.createServer() List=[] .on('data',data=>{List.forEach(v=>{通过netnetnetlocalhostHttp原理:客户端通过jax方式发送数据给http服务器,服务器缓存消息,其他客户端通过轮询方式查询最新数据并更新列表。<script<script<div<inputv-<buttonv-on:click="send">发送<buttonv-on:click="clear">清空<divv-for="iteminconsthost=varapp=newVue({el:'#app',data:{list:[],methods:'osend:asyncfunction()letres=awaitaxios.post(host+{message:this.list=clear:asyncfunction()letres=awaitaxios.post(host+'/clear')this.list=res.data}mounted:function{setInterval(async(){constres=awaitaxios.get(host+'/list')this.list=res.data},}constconstexpress=require('express')constapp=express()constbodyParser=require('body-parser');constpath=require('path')constlist=['ccc',(req,res)=>{res.sendFile(path.resolve('./index.happ.get('/list',(req,res){app.post(app.post('/send',(req,res){list.push(req.body.message)app.post('/clear',(req,res){list.length=0npminstall--save//服务端://服务端:chat-varapp=varhttp=require('http').Server(app);vario=require('socket.io')(http);app.get('/',function(req,res){res.sendFile(dirname+function(socket){console.log('auserconnected');socket.on('chatmessage',function(msg){console.log('chatmessage:'+//io.emit('chatmessage',////socket.broadcast.emit('chatmessage',function(){console.log('user//<!DOCTYPE<title>Socket.IO*margin:padding:box-sizing:border-}bodyfont:13pxHelvetica,}formbackground:#000;padding:3px;position:fixed;bottom:0;width:}form{border:0;padding:10px;width:90%;margin-right:}form{width:background:rgb(130,224,255);border:none;padding:}#messageslist-style-type:none;margin:0;padding:}#messages{padding:5px}#messagesli:nth-{background:}<ul<form<input

<script $(function()varsocket={e.preventDefault();//socket.emit("chatmessage",returnfalse;socket.on("chatmessage",function(socket.on("chatmessage",function(msg)WebSocketoverFLashXHRPollingXHRMultipartStreamingForever

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论