首页 > 其他分享 >聊聊JS中的WebSocket

聊聊JS中的WebSocket

时间:2024-08-17 19:57:36浏览次数:16  
标签:HTTP socket 实时 JS WebSocket 聊聊 服务器 连接

你好,我是沐爸,欢迎点赞、收藏和关注。个人知乎

在JavaScript中,使用WebSocket非常简单直观。通过几行代码,你就可以轻松创建一个WebSocket连接,并监听来自服务器的消息。无论是开发实时聊天应用、在线游戏、实时数据分析平台,还是任何需要实时数据交互的场景,WebSocket都能为你提供强大的技术支持。

一、WebSocket是什么?

WebSocket是一种在Web浏览器和服务器之间建立全双工通信的协议。它允许网页实时地发送和接收数据,而不需要页面刷新或像传统HTTP协议那样的轮询操作。

二、WebSocket的特点

  1. 实时性:WebSocket允许服务器主动向客户端推送数据,实现实时通信。
  2. 双向通信:WebSocket支持同时发送和接收数据,实现双向通信。
  3. 低延迟:由于建立了持久连接,并且数据传输没有额外的HTTP头部信息负担,因此WebSocket能够更快地传输小量数据。
  4. 节省带宽:WebSocket只需要一个TCP握手就能创建一个到服务器的链接,并且这个链接可以被复用以节省带宽。
  5. 跨域通信:WebSocket协议支持跨域通信,因此可以在任何Web域之间建立实时连接。
  6. 强大的可靠性:WebSocket提供了自动重连机制和数据压缩功能,增强了通信的可靠性。

三、WebSocket的基本使用步骤

在JavaScript中使用WebSocket,通常遵循以下步骤:

  1. 创建WebSocket对象

    使用new WebSocket(url)构造函数创建WebSocket对象,并传入要连接的WebSocket服务器的URL。例如:
const socket = new WebSocket('ws://localhost:8080');
  1. 监听事件

    WebSocket对象提供了一些事件,用于处理连接、消息、关闭和错误等情况。常用的事件有:
    • onopen:连接建立时触发。
    • onmessage:收到服务器消息时触发。
    • onclose:连接关闭时触发。
    • onerror:发生错误时触发。

示例:

socket.onopen = function(event) {  
    console.log('WebSocket连接已建立');  
};  
 
socket.onmessage = function(event) {  
    console.log('收到消息:', event.data);  
};  
 
socket.onclose = function(event) {  
    console.log('WebSocket连接已关闭');  
};  
 
socket.onerror = function(error) {  
    console.error('WebSocket Error:', error);  
};
  1. 与服务器通信

    一旦连接建立,就可以使用WebSocket对象提供的send()方法向服务器发送数据。例如:
socket.send('Hello, server!');
  1. 关闭连接

    如果需要关闭WebSocket连接,可以调用socket.close()方法。

四、WebSocket的优缺点

优点:

  • 实时性强,适合需要实时数据交互的应用场景。
  • 双向通信,可以同时发送和接收数据。
  • 节省带宽和服务器资源,因为不需要频繁地进行HTTP请求。
  • 跨域通信方便,简化了跨域数据交换的复杂度。

缺点

  • 兼容性问题,一些老版本的浏览器可能不支持WebSocket。
  • 缺乏完善的安全策略,需要开发者自行处理加密和验证等安全问题。
  • 对网络环境要求较高,网络波动可能导致连接断开。
  • 服务器压力相对较高,因为需要保持长连接。

五、WebSocket的应用场景

WebSocket适用于实时性要求高的应用场景,如社交聊天、弹幕、多玩家游戏、协同编辑、股票基金实时报价、实时交易、体育实况更新、视频会议/聊天、实时通知等。通过WebSocket,可以实现服务器与客户端之间的实时数据交换,提升用户体验。

六、WebSocket和HTTP的区别?

主要区别如下:

  • 通信方式:WebSocket 可以进行双向数据传输,客户端和服务器可以相互发消息。而 HTTP 是单向的,HTTP 的通信只能由客户端发起,服务端响应。
  • 连接特性:WebSocket在建立连接后,会保持这个连接直到被明确关闭。HTTP通常使用短连接,即每次请求-响应完成后,连接就会被关闭。
  • 应用场景:WebSocket广泛应用于需要实时数据交换的场景,如在线聊天、实时游戏等;HTTP主要用于Web页面的访问和数据传输,如网页浏览、文件下载、API接口调用等。

七、WebSocket的协议标识符?

如果服务器网址是HTTP,那么WebSocket 对应的是ws。

如果服务器网址是HTTPS加密的,那么WebSocket 对应的是wss。

八、如何搭建一个本地WebSocket服务?

推荐阅读:2分钟搭建一个简单的WebSocket服务器

在这里插入图片描述

希望对你有所帮助,下期再见!

标签:HTTP,socket,实时,JS,WebSocket,聊聊,服务器,连接
From: https://blog.csdn.net/m0_37943716/article/details/141271198

相关文章

  • Json
    Jsonstringjson=@"{'Result':{'ResponseStatus':{'IsSuccess':true,'Errors':[],'SuccessEntitys':[{'Id......
  • 【免费】ssm驾校预约管理系统jsp|毕业设计|Javaweb项目
    收藏点赞不迷路 关注作者有好处编号:ssm560ssm驾校预约管理系统jsp开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis+Vue工具:IDEA/Ecilpse、Navicat、Maven1.系统展示2.万字文档展示第5章系统详细设计系统实现这个章节的内容主要还是展示系统的功能界面设计......
  • 【免费】基于SSM的蛋糕甜品店管理系统的设计与开发jsp|毕业设计|Javaweb项目
    收藏点赞不迷路 关注作者有好处编号:ssm544基于SSM的蛋糕甜品店管理系统的设计与开发jsp开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis+Vue工具:IDEA/Ecilpse、Navicat、Maven文末获取源码(免费|领源码)1.系统展示2.万字文档展示第5章系统详细设计5.1个人中......
  • ssm驾校预约管理系统jsp管理系统|【源码+论文+PPT+部署视频】
    我们提供多元化的技术项目服务,涵盖Java、PHP、Python等编程语言,以及前端开发、人工智能、大数据、单片机开发、ASP.NET、物联网等领域。我们还提供简历模板、面试题库和学习资料,帮助用户提升技术能力和就业竞争力。我们的服务内容包括:免费功能设计、任务书和开题报告撰写、中......
  • 基于nodejs+vue秒杀系统实现[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着互联网技术的不断成熟和电子商务的蓬勃发展,秒杀活动作为电商平台吸引用户流量、提升销售额的重要手段,其重要性日益凸显。秒杀活动以其独特的限时、限量......
  • 基于nodejs+vue秒杀系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着互联网技术的迅猛发展和电子商务的日益繁荣,秒杀活动作为电商平台吸引用户、提升销量的重要手段,其重要性日益凸显。秒杀活动以其极低的价格和限时抢购的......
  • 基于nodejs+vue秒杀系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和电子商务的普及,网络购物已成为人们日常生活中不可或缺的一部分。在众多促销活动中,秒杀活动因其价格优惠、限时抢购的特性,深受消......
  • 基于nodejs+vue喵喵宠物医院管理系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着人们生活水平的提高和宠物文化的兴起,宠物已成为许多家庭不可或缺的成员。宠物健康与福利日益受到重视,催生了宠物医疗行业的快速发展。然而,传统宠物医院......
  • 基于nodejs+vue面向移动端的房屋租赁系统的设计与实现[程序+论文+开题]-计算机毕业设
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着城市化进程的加快和人口流动性的增强,房屋租赁市场日益繁荣,成为解决居民居住需求的重要途径。然而,传统的房屋租赁方式往往存在信息不对称、效率低下、交......
  • 基于nodejs+vue面向社区的洗衣店智能服务系统设计与实现[程序+论文+开题]-计算机毕业
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着城市化进程的加速和生活节奏的日益加快,社区居民对于便捷、高效的生活服务需求日益增长。传统洗衣店服务模式面临着顾客排队等待时间长、取送衣物不便、......