WebSocket 【实用教程】

WebSocket简介

WebSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,位于OSI模型的应用层。

特点

  • TCP连接,与HTTP协议兼容
  • 双向通信,主动推送(服务端向客户端)
  • 无同源限制,协议标识符是ws( 加密wss)

应用场景

  • 聊天,消息,点赞
  • 直播弹幕、评论
  • 游戏、协同编辑、基于位置的应用

前端库

  • 【推荐】ws(实现原生协议,特点: 通用、性能高,定制性强)
  • socket.io(向下兼容协议,特点:适配性强、性能一般

创建 WebSocket 服务端

新建文件夹 server,终端运行

cnpm init -y

初始化项目

安装 ws 库

cnpm i -S ws

新建项目启动文件 server\index.js

const WebSocket = require("ws");
// 在指定端口上,创建WebSocket服务
const wss = new WebSocket.Server({
    
     port: 3001 });
// 客户端连接到服务器的回调
wss.on("connection", function connection(ws) {
    
    
  console.log("一个客户端已连接");
  // 服务端接收客户端的消息
  ws.on("message", function (msg) {
    
    
    console.log("服务端接收到来自客户端的消息:" + msg);
  });
  // 服务端发消息给客户端
  ws.send("你好,客户端,我是服务端!");
});

启动项目

node server/index.js

创建 WebSocket 客户端

方法1:使用原生WebSocket

在html的js中执行

var ws = new WebSocket("ws://127.0.0.1:3001");

即可与WebSocket服务器建立连接

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 与服务端建立WebSocket长连接
      var ws = new WebSocket("ws://127.0.0.1:3001");
      // 客户端发送消息给服务端
      ws.onopen = function () {
      
      
        ws.send("你好,服务端,我是客户端!");
      };
      // 客户端接收到服务端的消息
      ws.onmessage = function (event) {
      
      
        console.log(event.data);
      };
    </script>
  </body>
</html>

方法2:使用ws

新建文件夹 client,终端运行

cnpm init -y

初始化项目

安装 ws 库

cnpm i -S ws

新建项目启动文件 client\index.js

// 导入ws库
const WebSocket = require("ws");
// 与服务端建立WebSocket长连接
const ws = new WebSocket("ws://127.0.0.1:3001");
ws.on("open", function () {
    
    
  console.log("node客户端成功连接到服务器");
  // 客户端发送消息给服务端
  ws.send("你好,服务端,我是node客户端!");
  // 客户端接收到服务端的消息
  ws.on("message", function (msg) {
    
    
    console.log("node客户端接收到服务端的消息:" + msg);
  });
});

启动项目

node client/index.js

猜你喜欢

转载自blog.csdn.net/weixin_41192489/article/details/134552816