【Node】---- 服务器连接

1、在浏览器中输入域名后发生的事

  • 输入域名
  • DNS域名解价(将域名解析为IP地址)
  • 找到相对应的服务器
  • TCP的三次握手(验证身体信息)
  • 找到相对应的资源库
  • 返回相对应的资源
  • 对所有文件进行解析
  • 将解析完华的页面返回客户端
  • 关闭面时进行TCP四次挥手

2、socket

(1)概念:网络上的两个程序通过一个双向的通信连续实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket),socket本质是编程接口API,对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,即socket编程接口;

--- HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。

(2)socket的使用过程:服务端初始化socket,再与端口绑定,对端口进行监听(listen),调用accept阻塞,等待客户连接;客个端初始化一个socket,并连接服务器(connect),客户端发送数据清求,服务器接收并处理清求,再将数据回在给客个端,客户端读取数据,最后关闭连接,一次交互结束。

(3)socket的使用场景

  • 聊天室、多人聊天
  • 实时性比较高的消息推送
  • 客户端与服务端之间通信

3、聊天室逻辑

net模块:net所创建的服务器能持久储存数据,http只能暂时存储。

(1)服务器

  • 通过”connection“事件,建立与每个客户端的连接,并将每个客户端添加到数组中
  • 通过”data“事件,接收客户端信息
  • 通过数组的遍历,将消息发给每个客户端
  • 通过id,当客户端断开消息时,将其移除数组

(2)客户端

  • 通打new net.Socket() 创建客户端
  • 通过readline模块在终端进行文件读写
  • 通过setEncoding("utf8");将buffer文件转为字符串
  • 通过"connect"方法连接服务器,参数为端口号、IP地址
  • 通过"data"事件,接收服务器的数据
  • 通过"line"事件,在终端读写文件

4、WebSocket:允许服务器主动向客户端推送数据,只需完成一次握手,两者便可以创建持久性的通接,并进行双向数据传输(html5新增的通讯协议)

5、Socket.io:将webSocket和轮询封装成一套API,屏蔽了细节差异和兼容性问题,实现了跨浏览器/跨设备进行双向数据通信。

6、单页面与多页面开发的区别

(1)单页面开发:SPA,只有一张web页面的应用,由一个初始页面和多个页面模块组成,单页面跳转仅刷新局部资源,公共资源(js、css)仅需加载一次。

  • 页面跳转:使用js中的append/remove或show/hide的方式进行页面内客的更换
  • 数据传递:可通过全局变量或参数传递,进行相关数据交互
  • 优势:户体验较好,页面切换的数据传递、页面切换动画都有较大的操作空间

(2)多页面开发:MPA,多页面跳转需刷新所有资源,每个公共资源需选择性重新加载。

  • 页面跳转:便用windoe.location.href进行页面跳转
  • 数据传递:通过路径携带数据传递的方式,或localSrorage、cookie等存储方式
  • 优势:适用于页面跳转较少,数据传递较少的顶月开发

7、非持久性连接与持久性连接

(1)非持久性连接:服务器每发送一个对象后,相关的TCP连接就被关闭,每个TCP连接只能传送一个请求消息和响应消息;

(2)持久性连接:服务器在发出响应后保持TCP连续打开着,同一客户/服务器之间的后续请求和响应可以通过这个连接传递;

原文地址:https://www.cnblogs.com/pinkpinkc/p/14523007.html