«

webscoket协议

yang 发布于 阅读:391 杂乱知识点


HTTP协议:

超文本传输协议,规定了请求和响应,发送一次请求,对方收到后会回响应
使用在客户端/服务器之上, 客户端可以发出请求, 服务器收到后会根据请求回响应资源
--1次请求必须对应1次响应(短链接: 1次请求和1次响应执行完后会立即断开链接)

HTTP事务完整流程:

----衍生问题:为什么请求量/流量大了后,服务器就会卡顿...
服务器在每1ms中,能建立的链接是有限的(根据服务器硬件来决定)

HTTP请求:

GET *POST HEAD DELETE TRACE CONNECT PUT OPTION
浏览器为了实现HTTP协议, 创造了一个对象 XMLHttpRequest, 用来发送请求, 收到响应

  1. 创造请求对象

    let myrequest = new XMLHttpRequest()
  2. 指定对象的请求URL及请求方式

    myrequest.open(?请求方式 , ?URL) 
  3. 发送请求

    myrequest.send('key=value&key2=value2')
  4. 监听响应

    
    myrequest.onreadystatechange = () => {
            //请求成功  && 响应也要成功
            if(myrequest.readyState == 4 && myrequest.status == 200){
                myrequest.responseText //服务器返回的结果
            }
        }

轮询(效率有一点低,但是仍然有场景需要使用):
定时器 + HTTP,指定周期请求一次服务器
setInterval(() => {
//请求一次聊天服务器
},1000)


# WEBSOCKET长链接协议:
HTML5时推出的, 应用在客户端/服务器之上的协议.  手机端/小程序/浏览器等客户端,都可以使用此协议当客户端和服务器建立了链接后, 在链接中就没有请求和响应的概念了, 只有推送消息打破了之前1次请求1次响应的规范.  客户端可以随时主动给服务器推送消息, 服务器反之同理.
使用最多的地方: 即时通信

//ws协议,因为建立连接后,不管发不发推送,都会持续消耗服务器资源...没有http性能高
//前端/后端会增加定时器判断,如果>=x分钟还没有发送消息,就会断开ws连接,节约服务器资源

1. 创建WS对象,与服务器建立webscoket链接
```javascript
let ws = new WebSocket('ws接口地址')

//http协议的接口如下
http://xxxxx.xxxx.xxxx:端口  //普通
https://同上               //加密

//webscoket的接口如下
ws://11.22.16.33:端口  //普通
wss://11.22.16.33:端口 //加密
  1. 监听ws对象是否建立链接成功
    ws.onopen = () => {
    //只要成功,就会触发此回调
        }
  2. 主动推送一个消息给服务器
    ws.send('传递的数据,注意和http一样,不支持对象,对象需要JSON转换在发送')
  3. 监听服务器推送的消息
    ws.onmessage = (data) => {
    //data服务器推送的消息
    }
  4. 前端主动断开链接
    ws.close()

    注意ws不能发送对象参数,发送以后不会报错,但是没有任何效果!!!!!!

webscoket协议

版权所有:微4e
文章标题:webscoket协议
除非注明,文章均为 微4e 原创,请勿用于任何商业用途,禁止转载

推荐阅读:


扫描二维码,在手机上阅读
请先 登录 再评论