zoukankan      html  css  js  c++  java
  • 【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连续打开着,同一客户/服务器之间的后续请求和响应可以通过这个连接传递;

  • 相关阅读:
    struct模块
    socketserver模块
    操作系统的基础知识和进程
    day28
    day27
    内心要强大
    《人生》
    下棋+《人生》
    悲哀+鸡眼
    脑壳疼
  • 原文地址:https://www.cnblogs.com/pinkpinkc/p/14523007.html
Copyright © 2011-2022 走看看