初面网初面网

简介

一种通信协议。与http协议不同的是,支持服务器主动向客户端发送内容。

支持html5的浏览器,也默认支持websocket。

创建

let ws = new WebSocket(url);  // ws://ip地址:端口号/资源名称

支持的方法

方法格式说明
openws.onopen连接建立时触发
messagews.onmessage客户端接收服务端数据时触发
errorws.onerror通信发生错误时触发
closews.onclose连接关闭时触发
sendws.send使用连接发送数据

后端实现

安装

npm i ws

创建

const WebSocket = require("ws");
const wss = new WebSocket.Server({
  port: 8008
})

监听事件

// 连接事件,即有客户连入
wss.on("connection", client=>{
  console.log("有客户端连入...");
});

// 接收数据
wss.on("connection",client=>{
  client.on("message", msg=>{
    console.log("有数据传来")
  });
});

// 主动传给客户端
client.send("hello socket");

// 想全部遍历在线的连接可以用下面这句wss.clients.forEach()
// wss.clients.forEach(client=>{
//   client.send("内容");
// })

前端实现

let connect = document.querySelector("#connect"); // 假设html中有id为connect的按钮
let send = document.querySelector("#send");// 假设html中有id为send的按钮
let recv = document.querySelector("#recv");// 假设html中有id为recv的按钮
connect.onclick = function(){
  ws = new WebSocket("ws://localhost:8098");
  ws.onopen = () => {
    console.log("连接成功")
  }
  ws.onclose = () => {
    console.log("连接失败")
  }

  ws.onmessage = msg => {
    console.log("接收数据:");
    recv.innerHTML = msg.data;
  }
}

send.onclick = function(){
  ws.send("前端消息")
}

更新于 2025/2/26