了解一下websocket

Websocket 是什么?

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。跟http一样是一种协议

跟SOCKET、HTTP有什么区别呢?

Http

HTTP是单向的,客户端发送请求,服务器发送响应。举例来说,当客户端向服务器发送请求时,该请求以HTTP或HTTPS的形式发送,在接收到请求后,服务器会将响应发送给客户端。每个请求都与一个对应的响应相关联,在发送响应后客户端与服务器的连接会被关闭。每个HTTP或HTTPS请求每次都会新建与服务器的连接,并且在获得响应后,连接将自行终止。 HTTP是在TCP之上运行的无状态协议,TCP是一种面向连接的协议,它使用三向握手方法保证数据包传输的传递并重新传输丢失的数据包。

Websocket

WebSocket是双向的,在客户端-服务器通信的场景中使用的全双工协议,与HTTP不同,它以ws://或wss://开头。它是一个有状态协议,这意味着客户端和服务器之间的连接将保持活动状态,直到被任何一方(客户端或服务器)终止。在通过客户端和服务器中的任何一方关闭连接之后,连接将从两端终止。

Socket

Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。

举个例子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
</body>
</html>
<script>
  var ws = new WebSocket('ws://localhost:3000/websocket'); //申请一个WebSocket对象,参数是服务端地址,同http协议使用http://开头一样,WebSocket协议的url使用ws://开头,另外安全的WebSocket协议使用wss://开头
  ws.onopen = function() {  //当WebSocket创建成功时,触发onopen事件
    console.log('open');
    ws.send(JSON.stringify({
      'msg': 'connect',
      'version': '1',
      'support': ['1']
    }));
    ws.send(JSON.stringify({
    id: "d2c241b3-6e15-45c7-bc88-927bb6daa0a5",
    method: "login",
    msg: "method",
    params: [{user: {username: "test1"},password: {digest: "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92", algorithm: "sha-256"}}]
    })); //将消息发送到服务端
    ws.send(JSON.stringify({
      "msg": "sub",
      "id": "tKKsgLdXa6wEAQszv",
      "name": "stream-room-messages",
      "params":[
        "4pXBvSmWpkP9XG4zZDpcRwjM68r5A89uM4",
        false
      ]
    })); //将消息发送到服务端
  };
  ws.onmessage = function(e) {  //当客户端收到服务端发来的消息时,触发onmessage事件,参数e.data包含server传递过来的数据  
    console.log(e.data);
    if(JSON.parse(e.data).msg==='ping'){ // 这个是心跳重连机制,服务端发来ping的时候,客户端要回复pong,这样连接不会断
      ws.send(JSON.stringify({
        'msg': 'pong'
      }));
    }
  };
  ws.onclose = function(e) {  //当客户端收到服务端发送的关闭连接请求时,触发onclose事件 
    console.log('close');
  };
  ws.onerror = function(e) {  //如果出现连接、处理、接收、发送数据失败的时候触发onerror事件  
    console.log(error);
  };
</script>

在浏览器的哪里查看?

在控制台的Network面板选择WS就可以看到发出的websocket连接了
在这里插入图片描述

有什么插件可以直接用么?

可以用rocket.chat.realtime.api.rxjs 这个,我也是用这个来做即时通讯的。

公众号

欢迎大家关注我的公众号: 石马上coding,一起成长
石马上coding

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值