websocket知识点

news2025/1/11 4:26:06

http协议

http协议特点:

  1. 无状态协议
  2. 每个请求是独立的
  3. 单双工通信,且服务器无法主动给客户端发信息
  4. http协议受浏览器同源策略影响

http实现双向通信方法:

  1. 轮询
  2. 长轮询
  3. iframe流
  4. sse EventSource

websocket协议

websocket协议:

  1. 全双工协议
  2. 支持跨域
  3. 支持多种数据格式

在这里插入图片描述

在这里插入图片描述

客户端

<!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服务
      const ws = new WebSocket("ws://localhost:3000");
      ws.onopen = () => {
        console.log("客户端连接成功");

        // 给服务端发送消息
        ws.send("hi server");
      };

      // 监听服务端数据
      ws.onmessage = function (ev) {
        console.log("服务端:", ev.data);
      };
    </script>
  </body>
</html>

服务端

import http from "http";
import express from "express";
import { WebSocketServer } from "ws";

const app = express();
const server = http.createServer(app); // http服务
const wss = new WebSocketServer({ server });

wss.on("connection", (ws) => {
  console.log("服务端连接成功");

  // 给客户端发消息
  ws.send("hi client");

  // 监听客户端数据
  ws.on("message", (msg) => {
    console.log("客户端:", msg.toString());
  });
});

server.listen(3000);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/851114.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大学生口才培训需求分析

标题&#xff1a;大学生口才培训需求分析 摘要&#xff1a; 本论文旨在分析大学生口才培训的需求&#xff0c;通过对大学生口才培训的重要性、现状和挑战进行研究&#xff0c;并结合相关理论和实践经验&#xff0c;提出相应的培训需求和解决方案。通过本论文的研究&#xff0c…

stm32 cubemx can通讯(1)回环模式

文章目录 前言一、cubemx配置二、代码1.过滤器的配置&#xff08;后续会介绍&#xff09;2.main.c3.主循环 总结 前言 介绍使用stm32cubemx来配置can&#xff0c;本节讲解一个简答&#xff0c;不需要stm32的can和外部连接&#xff0c;直接可以用于验证的回环模式。 所谓回环模…

Redis数据库学习

目录 第一章、Redis数据库的下载和安装1.1&#xff09;nosql数据库和 Redis 介绍1.2&#xff09;Windows中下载安装Redis数据库1.3&#xff09;Linux中安装Redis数据库1.4&#xff09;Linux中启动redis1.4&#xff09;Linux中关闭redis 第二章、三种Redis客户端连接Redis数据库…

TS 踩坑之路(四)之 Vue3

一、在使用定义默认值withDefaults和defineProps 组合时&#xff0c;默认值设置报错 代码案例 报错信息 不能将类型“{ isBackBtn: false; }”分配给类型“(props: PropsType) > RouteMsgType”。 对象字面量只能指定已知属性&#xff0c;并且“isBackBtn”不在类型“(pro…

探索 TypeScript 元组的用例

元组扩展了数组数据类型的功能。使用元组&#xff0c;我们可以轻松构造特殊类型的数组&#xff0c;其中元素相对于索引或位置是固定类型的。由于 TypeScript 的性质&#xff0c;这些元素类型在初始化时是已知的。使用元组&#xff0c;我们可以定义可以存储在数组中每个位置的数…

【vue3】基础知识点-setup语法糖

学习vue3&#xff0c;都会从基础知识点学起。了解setup函数&#xff0c;ref&#xff0c;recative&#xff0c;watch、comptued、pinia等如何使用 今天说vue3组合式api&#xff0c;setup函数 在学习过程中一开始接触到的是这样的&#xff0c;定义数据且都要通过return返回 <…

[保研/考研机试] 括号匹配问题 C++实现

题目描述&#xff1a; 在某个字符串(长度不超过100)中有左括号、右括号和大小写字母&#xff1b;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序&#xff0c;找到无法匹配的左括号和右括号&#xff0c;输出原来的字符串&am…

grpcGateway配置

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

python openpyxl模块使用教程

目录 安装 openpyxl 模块工作簿相关方法工作表对象单元格相关方法1. 单元格对象获取2. 单元格属性3. 单元格样式4. 插入/删除 行列 安装 openpyxl 模块 pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple工作簿相关方法 openpyxl.Workbook() : 新建工作簿&am…

Unity游戏源码分享-模拟城市搭建City Adventure

Unity游戏源码分享-模拟城市搭建City Adventure 插件如下&#xff1a; 下载地址&#xff1a; https://download.csdn.net/download/Highning0007/88191931

excel行转列

1.选中要转的内容&#xff0c;ctrlc 2.选择对应的大小&#xff0c;右击&#xff0c;点转置 3.ok

JavaScript算法【入门】

作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&#xff0c;目前于海外某世界知名高校就读计算机相关专业。荣誉&#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者&#xff0c;在CTF省赛校赛多次取得好成绩。…

使用nodejs自动生成后端的模板文件

在编写nodejs后端时&#xff0c;我发现一些模板文件是十分通用的&#xff0c;所以想着由机器帮我生成简单的模板文件。利用的是nodejs的fs能力&#xff0c;代码如下 const fs require("fs"); const path require("path"); const { humpTransformLine } …

【vue Dplayer】播放hls视频流

准备工作 安装Dplayer和hls.js npm install dplayer --save npm install hls.js --save准备测试流 hls测试地址&#xff1a;&#xff08;截止2023.08.08有效&#xff09; http://playertest.longtailvideo.com/adaptive/bipbop/gear4/prog_index.m3u8 <template><d…

Android 项目导入高德SDK初次上手

文章目录 一、前置知识&#xff1a;二、学习目标三、学习资料四、操作过程1、创建空项目2、高德 SDK 环境接入2.1 获取高德 key2.2下载 SDK 并导入2.2.1、下载SDK 文件2.2.2、SDK 导入项目2.2.3、清单文件配置2.2.4、隐私权限 3、显示地图 一、前置知识&#xff1a; 1、Java 基…

Java8实战-总结14

Java8实战-总结14 引入流流是什么 引入流 集合是Java中使用最多的API。几乎每个Java应用程序都会制造和处理集合。集合对于很多编程任务来说都是非常基本的&#xff1a;它们可以让数据分组并加以处理。为了解释集合是怎么工作的&#xff0c;想象一下准备列出一系列菜&#xff…

带你认识红黑树

红黑树 一、什么是红黑树&#xff1f;1.1 AVL树1.2 红黑树 二、红黑树的特点三、红黑树的insert、delete3.1 insert3.1.1 父节点为空3.1.2 父节点为Black节点3.1.3 父节点为Red节点3.1.3.1 叔叔节点为Red节点3.1.3.2 叔叔节点为Black节点 3.2 delete3.2.1 删除节点有两个子节点…

libmpv使用滤镜处理视频进行播放

一、前言 作为一个功能强大的多媒体框架,libmpv为开发者提供了广泛的功能和灵活的控制权。滤镜是libmpv的一个重要特性,允许开发者对视频进行各种实时处理和增强,从而满足用户对于个性化、创意化和高质量视频体验的需求。 滤镜是一种在视频渲染过程中应用特定效果的技术。…

若依-plus-vue启动显示Redis连接错误

用的Redis是windows版本&#xff0c;6.2.6 报错的主要信息如下&#xff1a; Failed to instantiate [org.redisson.api.RedissonClient]: Factory method redisson threw exception; nested exception is org.redisson.client.RedisConnectionException: Unable to connect t…

Vscode-工具使用

Vscode &#xff0c;这玩意儿是开源的&#xff0c;以前用收费的破解版&#xff0c;过段时间就高版本不匹配&#xff0c;这次搞个不要钱的玩玩&#xff0c;记录使用心得 下载 下载地址&#xff1a;官网 点击下载&#xff0c;但是这里有个问题下载比较慢&#xff0c;解决办法&a…