当前位置: 首页 > news >正文

前端 WebSocket 的一些使用

前端 WebSocket 的一些使用

文章目录

  • 前端 WebSocket 的一些使用
    • 连接的建立
    • 接收消息
    • 发送消息
    • 关闭连接
    • 处理

WebSocket 是一种网络通信协议,用于实现双向通信。在前端中,你可以使用 JavaScript 中的 WebSocket 对象来创建 WebSocket 连接,发送和接收数据。

连接的建立

通过创建一个 WebSocket 对象建立一个 WebSocket 连接

例如:

const ws = new WebSocket('ws://localhost:8080/channel/echo');

传给对象的参数是通过 WebSocket 协议通讯的网络地址。

接收消息

接收消息这里指的是接收服务端的消息。

这里有两种方法。

  1. 使用 addEventListener: 你可以使用 addEventListener 来监听 message 事件,这是最常见的方式,也是推荐的做法。

    ws.addEventListener('message', (event) => {const receivedMessage = event.data;console.log('Received message from server:', receivedMessage);// 在这里处理接收到的消息
    });
    
  2. 使用 onmessage 属性: 除了使用 addEventListener,你还可以直接设置 onmessage 属性来指定消息处理函数。这与之前的示例相似,但更简洁:

    ws.onmessage = function (event) {const receivedMessage = event.data;console.log('Received message from server:', receivedMessage);// 在这里处理接收到的消息
    };
    

发送消息

发送消息到服务器: 使用 send() 方法将消息发送到服务器:

ws.send('Hello, server!'); // 发送消息给服务器

关闭连接

关闭 WebSocket 连接: 要关闭 WebSocket 连接,你可以简单地使用 WebSocket.close() 方法,例如:

ws.close();

如果 WebSocket 连接的 readyState 已经处于 CLOSE 状态,那么该方法不会执行任何操作

检查 WebSocket 是否打开: 你可以通过检查 WebSocketreadyState 属性来判断 WebSocket 是否打开。如果 readyState 的值为 WebSocket.OPEN,则表示连接已打开:

if (ws.readyState === WebSocket.OPEN) {// WebSocket 连接已打开
}

这样你就可以在代码中判断 WebSocket 是否处于打开状态了

处理

处理连接状态: 你可以监听其他事件,例如 opencloseerror,以处理连接的不同状态:

ws.addEventListener('open', (event) => {console.log('WebSocket 已连接');
});ws.addEventListener('close', (event) => {console.log('WebSocket 连接已关闭');
});ws.addEventListener('error', (event) => {console.error('WebSocket 连接出现异常:', event.error);
});

同样可以使用onclose 、 onerror 、 onopen 属性定义时间监听函数。

大家好,我是xwhking,一名技术爱好者,目前正在全力学习 Java,前端也会一点,如果你有任何疑问请你评论,或者可以加我QQ(2837468248)说明来意!希望能够与你共同进步

相关文章:

  • 【Spring底层原理高级进阶】Spring Kafka:实时数据流处理,让业务风起云涌!️
  • 实战解析:打造风控特征变量平台,赋能数据驱动决策
  • Python - getpass
  • 线上问题——学习记录幂等判断失效问题分析
  • Git快速入门
  • 回溯算法01-组合(Java)
  • 数据库分库分表中间件选择
  • 【扩散模型系列1】扩散模型背景|DDPMs|LDM
  • 【理解机器学习算法】之Nearest Shrunken Centroid(纯Python)
  • Redis面试题
  • C++模拟揭秘刘谦魔术,领略数学的魅力
  • Python 程序基本结构的使用
  • 循环队列:一道使数据结构萌新知道什么是“愁滋味“的题目
  • 字符串逆序
  • web坦克大战小游戏
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • ➹使用webpack配置多页面应用(MPA)
  • crontab执行失败的多种原因
  • es6(二):字符串的扩展
  • gf框架之分页模块(五) - 自定义分页
  • java概述
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • Octave 入门
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • python 装饰器(一)
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 关于List、List?、ListObject的区别
  • 诡异!React stopPropagation失灵
  • 基于组件的设计工作流与界面抽象
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 微信小程序开发问题汇总
  • 一个SAP顾问在美国的这些年
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 你对linux中grep命令知道多少?
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (003)SlickEdit Unity的补全
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (solr系列:一)使用tomcat部署solr服务
  • (五)c52学习之旅-静态数码管
  • (转)关于多人操作数据的处理策略
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • ******IT公司面试题汇总+优秀技术博客汇总
  • ***测试-HTTP方法
  • **PHP二维数组遍历时同时赋值
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .Net面试题4
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)