WebSocket 【实用教程】

简介: 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
目录
相关文章
|
3月前
|
XML JSON Go
Swoole与Go系列教程之WebSocket服务的应用
在 WebSocket 协议出现之前,Web 应用为了能过获取到实时的数据都是通过不断轮询服务端的接口。轮询的效率、延时很低,并且很耗费资源。
1042 2
Swoole与Go系列教程之WebSocket服务的应用
|
4月前
|
JavaScript 前端开发 Java
蓝易云 - Java现实WebSocket教程
以上就是在Java中实现WebSocket的基本步骤。
18 1
|
移动开发 JavaScript 前端开发
WebSocket 详解教程 上
WebSocket 详解教程 上
505 0
WebSocket 详解教程    上
|
XML 移动开发 Java
WebSocket 详解教程 下
WebSocket 详解教程 下
305 0
|
消息中间件 JSON JavaScript
Springboot 整合Websocket+Stomp协议+RabbitMQ做消息代理 实例教程
Springboot 整合Websocket+Stomp协议+RabbitMQ做消息代理 实例教程
1763 0
Springboot 整合Websocket+Stomp协议+RabbitMQ做消息代理 实例教程
|
XML 前端开发 JavaScript
SpringBoot如何整合WebSocket? | 带你读《SpringBoot实战教程》之四十一
WebSocket 连接允许客户端和服务器之间进行全双工通信,以便任一方都可以通过建立的连接将数据推送到另一端。WebSocket 只需要建立一次连接,就可以一直保持连接状态。这相比于轮询方式的不停建立连接显然效率要大大提高。
SpringBoot如何整合WebSocket? | 带你读《SpringBoot实战教程》之四十一
|
Web App开发 Shell
|
Web App开发 传感器 物联网
《物联网框架ServerSuperIO教程》-22.Web端对传感器实时监测与控制。附:v3.6.8版本,支持WebSocket
1.ServerSuperIO v3.6.8更新内容 1.1 增加WebSocket服务端功能,支持自控模式、并发模式、单例模式,不支持轮询模式1.2 接收数据缓存与现有的IO实例分离。1.3 优化代码。
2143 0
|
3月前
|
前端开发 网络协议 JavaScript
在Spring Boot中实现基于WebSocket的实时通信
在Spring Boot中实现基于WebSocket的实时通信
|
2月前
|
开发框架 网络协议 Java
SpringBoot WebSocket大揭秘:实时通信、高效协作,一文让你彻底解锁!
【8月更文挑战第25天】本文介绍如何在SpringBoot项目中集成WebSocket以实现客户端与服务端的实时通信。首先概述了WebSocket的基本原理及其优势,接着详细阐述了集成步骤:添加依赖、配置WebSocket、定义WebSocket接口及进行测试。通过示例代码展示了整个过程,旨在帮助开发者更好地理解和应用这一技术。
85 1