我的插件开发学习4--html5之Websocket对象

全栈开发实战:HTML与WebSocket实时通信 在即时通讯、在线协作、股票行情等需要“秒级响应”的场景中,传统HTTP协议因“请求-响应”的单向模式显得力不从心。本文将聚焦WebSocket协议,教你如何用最常见的HTML(前端)+Node.js(后端)技术栈,实现客户端与服务器的双向实时通信。内容覆盖原理讲解、代码实战、场景应用,让你既能“知其然”也能“知其所以然”。本文将按“原理→实战→应用”的逻辑展开:先通过生活案例理解WebSocket的核心价值,再拆解前后端代码实现,最后结合实际场景说明如何落地。WebSocket。 阅读详情

WebSocket简介

WebSocket protocol 是HTML5一种新的协议(protocol)。它是实现了浏览器与服务器全双工通信(full-duplex)。

现在,很多网站为了实现即时通讯(real-time),所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(time interval)(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求(request),然而HTTP request 的header是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽。

而最比较新的技术去做轮询是采用AJAX,但这种技术虽然可达到全双工通信,但依然需要发出请求(reuqest)。

在WebSocket API,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。在此WebSocket 协议中,为我们实现即使服务带来了两大好处:1. Header 互相沟通的Header是很小的-大概只有 2 Bytes 2. Server Push 服务器可以主动传送数据给客户端。


websocket通信协议实现的是基于浏览器的原生socket,目前firefox4.x及chrome的最新版都支持websocket对象。详细的websocket API,可以参考此文: http://dev.w3.org/html5/websockets/。需要说明的是,html5的标准化工作仍在进行中,其完全稳定下来可能需要5-10年的时间,因此其中许多规范包括这里有websocket都是不稳定的,你需要及时跟进才可以开发出正确的应用程序。

我们来简单看下websocket的IDL定义:

[Constructor(in DOMString url, in optional DOMString protocols)]

[Constructor(in DOMString url, in optional DOMString[] protocols)]

 

interface WebSocket
{
  readonly attribute DOMString url;
 
  // ready state
  const unsigned short CONNECTING = 0;
  const unsigned short OPEN = 1;
  const unsigned short CLOSING = 2;
  const unsigned short CLOSED = 3;
  readonly attribute unsigned short readyState;
  readonly attribute unsigned long bufferedAmount;
 
  // networking
           attribute Function onopen;
           attribute Function onmessage;
           attribute Function onerror;
           attribute Function onclose;
  readonly attribute DOMString protocol;
  void send(in DOMString data);
  void close();
};

 


在客户端的JS脚本中使用websocket对象是十分简单的,只需要生成一个对象,随后定义4个事件处理函数即可。下面是一个极为简单的示例:

var ws = new websocket(ws://www.xxx.com/path)

ws.onopen=function(){alert("connection opened")}

ws.onerror=function(){}

ws.onmessage=function(msg){alert(msg)}

ws.onclose=function(){alert("connection close")}

ws.send("hello server")

ws.close()

目前支持websocket的服务器很多,apache已经支持,此外还有其他一些专门的websocket非web服务器的实现,比如基于java实现的jwebsockets。


下面介绍一下websocket的协议。其协议过程十分简单,首先是类http请求、响应的握手过程,一旦握手成功,以后的双向通信便直接基于tcp协议传送数据,而不再使用http进行封装,从而减少了不必要的数据传输。握手协议也十分简单,可以用下面的两段http交互表示:

GET /path HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: www.host.com:8000
Origin: http://www.host.com
Cookie: someCookie

 

 

HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
WebSocket-Origin: http://www.host.com
WebSocket-Location: ws://www.host.com:8000/path
websocket支持二进制数据的传输,服务端在连接建立后只管往socket里面写数据就可以了。websocket的通信数据全部是以”/x00″开头以”/xFF”结尾的,无论是服务端发出的数据还是客户端发送的数据都遵从这个格式,唯一不同 的是客户端的WebSocket对象能够自动将头尾去除,获得主体数据,这就省却了在客户端处理原始数据的必要。此外WebSocket通信数据的编码总是UTF-8格式的。

 

websocket和web网页通讯插件 此插件的作用是可以把数据推送到网页端(原理是把C#d的程序当作服务器,网页端是一个客户端) 立即下载

相关推荐

jmeter+websocket接口测试所需插件集合

jmeter+websocket接口测试所需插件集合

WebSocket使用javax.websocket.RemoteEndpoint.Basic.sendObject(Object arg0)向页面方法发送对象

WebSocket接口中有一个直接发送对象给页面的方法: voidjavax.websocket.RemoteEndpoint.Basic.sendObject(Object arg0) throws IOException,EncodeException 如果直接使用 client.session.getBasicRemote().sendObject(obj); 就会出现以下错误: javax.websocket.EncodeException: No encoder specified fo

诚的博客 1680

ffmpeg在windows的安装、合并、切片、.m4s、.m3u8处理

自己处理视频,我用的工具是 ffmpeg,因为涉及到.m3u8格式和.m4s格式的一些操作。ffmpeg的介绍我就不多说了,这里是它的官网地址: https://ffmpeg.org/ ,这里是文档: https://ffmpeg.org/documentation.html (看的头大,没咋看下去)...

一只爱吃糖的小羊 2689

WebSocket发送与接收数据

除了能发送文本信息和普通对象信息之外,还可以发送ArrayBuffer对象和Blob对象;

mon_star°的博客 2409

基于YOLO11的垃圾分类AI模型训练实战

通过这次实战,我们成功训练出了一个高性能的垃圾分类AI模型。项目展示了从数据准备、模型训练到结果分析的完整流程,为AI在环保领域的应用提供了有价值的参考。项目文件结构│ ├── best.pt # 最佳模型权重│ └── last.pt # 最新模型权重├── results.csv # 详细训练数据├── results.png # 训练曲线图├── confusion_matrix.png # 混淆矩阵└── args.yaml # 训练参数配置。

lydz1的博客 1657

别再手动抄表了!用MCGS触摸屏自动存数据到U盘,5分钟搞定报表导出

本文详细介绍了如何利用MCGS触摸屏实现工业数据自动记录与U盘导出,彻底告别传统手动抄表方式。通过昆仑通态MCGS系统,可构建零误差自动化报表系统,实现实时数据采集、双重备份及标准CSV格式导出,大幅提升数据准确性和工作效率。

weixin_30872157的博客 792

【详细】WebSocket传递对象(sendObject方法)报错解决方案

当我们在服务端使用WebSocket的sendObject方法直接向前端传递一个对象时,会有如下报错 javax.websocket.EncodeException: No encoder specified for object of class [这里是你sendObject里传的对象的全名] 原因是你没有在@ServerEndpoint里指定Websocket的编码器。解决方法如下: 编写一个编码器类,下面是一个比较通用的编码器,你可以直接复制粘贴然后进行简单的修改就好,注解也很详细。

Useless_code的博客 6904

OpenVINS实战指南:从环境搭建到RGB-D相机实时建图

本文提供了一份详细的OpenVINS实战指南,涵盖从Ubuntu与ROS环境搭建、依赖安装与编译调试,到连接RGB-D相机进行实时建图的完整流程。重点解决了RealSense D435i等设备的驱动配置、话题对齐及常见问题,并分享了传感器标定与性能优化技巧,帮助开发者快速实现稳定高效的视觉惯性里程计系统。

weixin_29201313的博客 482

websocket 发送给前端一个对象_springboot集成websocket实现向前端浏览器发送一个对象,发送消息操作手动触发...

工作中有这样一个需示,我们把项目中用到代码缓存到前端浏览器IndexedDB里面,当系统管理员在后台对代码进行变动操作时我们要更新前端缓存中的代码怎么做开始用想用版本方式来处理,但这样的话每次使用代码之前都需要调用获取版本API来判断版本是否有变化来是否更新本地代码,这样的话对服务器造成很大的压力。后来考虑http慢轮讯方式,最后了解到WebSocket这简直是神器,以后还可用来扩展项目中的即时聊...

weixin_36485103的博客 503

XPe开发初体验(一)XPe概述

XP Embedded是微软Windows Embedded产品线中非常重要的一环,不过比起大名鼎鼎的Windows Embedded CE,XPe显得过于低调了。在接下来的一段时间里,我希望能够用六篇的篇幅来描述一下XPe的整个开发过程。这个系列文章主要是针对有Windows编程经验,但是没有嵌入式开发经验的开发者,提供一些概念和开发过程的初步介绍。XP Embedded是一个基于Windo

aawolf = new Mobile.MVP 1万+

Transformer-Based Attention Networks for Continuous Pixel-Wise Prediction 基于Transformer注意力网络连续像素级与估计

Transformer-Based Attention Networks for Continuous Pixel-Wise Prediction 基于Transformer注意力网络的连续的像素级的

MengYa_Dream的博客 4716

WebSocket(二):传递对象

报错 javax.websocket.EncodeException: No encoder specified for object of class 使用websocket传递对象

肉团子的博客 1万+

【RKNN】RKNN-Toolkit2 Python API函数详解

RKNN-Toolkit2 的 API 设计以开发者效率为核心,覆盖模型转换、量化、部署全流程。通过灵活的参数配置(如多核调度、混合量化)和调试工具(性能分析、精度对比),可快速适配复杂边缘场景。

浩瀚之水的专栏 786

【温故而知新】HTML5 WebSocket

HTML5是HTML的最新版本,它引入了许多新的元素和功能,以适应现代网页开发的需求。新增语义元素:HTML5引入了许多新的语义元素,如等,这些元素有助于提高网页的结构化和可访问性。媒体支持:HTML5引入了和元素,使得开发者可以在网页上直接嵌入音频和视频内容,而不需要依赖第三方插件。Canvas绘图:HTML5引入了元素,使得开发者可以使用JavaScript在网页上绘制图形和动画。语义化标签:HTML5的语义化标签使得网页的结构更加清晰和易于理解。

日常笔记/总结/系列知识梳理 1605

uniapp [全端兼容] - 实现省市区选择器三四级联动组件,uniapp选择地址自定义省市区三级联动插件,弹框式多级联动选择器区域选择(全平台兼容苹果安卓App、支付宝微信小程序、移动端H5网页)

uni-app省市区选择器,省市区街道三级四级联动选择器,uniapp自定义多列选择器省市两级联动,uniapp picker组件实现多级联动,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,uniApp选择器省市区县街道乡镇,uniapp实现省市区选择联动,uniapp城市三级联动(自定义组件)_uniapp三级联动,picker插件省市区联动,uniapp小程序省市区选择器,uni-app 省市区街道的四级联动选择,uniapp怎样实现省市区地址三级联动uni

🏆 前端领域优质创作者 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

HTML5之WebSocket

Introduction: 准备实践一些HTML5的新技术来强化项目的工具。设计后台交互部分选择了HTML5的WebSocket,研究了一下基本的用法,想写点对于WebSocket实践的感受。 个人觉得WebSocket的出现是对于Web应用交互性设计的一次革新。WebSocket提出之前,为了解决后台推送消息到前台的需求,提出了一些解决方案,这些方案使用已有的技术(如ajax,ifr

Ant Ren的专栏 4824

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

jquery的websocket插件

WebSocket是HTML5一种新的协议。顾名思义,它在服务器和浏览器之间建立了全双工通信,避免了传统的轮询。它也由于ajex,无需发送请求,服务器可以主动传输数据给客户端。 jquery好像没有官方的插件,但可以从http://code.google.com/p/jquery-websocket/下到名为jQuery Web Sockets Plugin v0.0.1的插件。 要使用此插件

lcy930822的专栏 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

HTML5 WebSocket 权威指南(一)

原文:The Definitive Guide to HTML5 WebSocket 协议:CC BY-NC-SA 4.0 一、HTML5 WebSocket 简介 这本书是为任何想学习如何构建实时 web 应用的人准备的。你可能会对自己说,“我已经这样做了!”或者问“那到底是什么意思?”让我们澄清一下:这本书将向您展示如何使用一种革命性的新的、被广泛支持的开放式行业标准技术 webSocket 来构建真正实时的 Web 应用,这种技术可以在您的客户端应用和远程服务器之间通过 Web 实现全双工、双向通

龙哥盟 1162

html5 websocket插件,jquery的websocket插件

jquery的websocket插件2018-12-05WebSocket是HTML5一种新的协议。顾名思义,它在服务器和浏览器之间建立了全双工通信,避免了传统的轮询。它也由于ajex,无需发送请求,服务器可以主动传输数据给客户端。jquery好像没有官方的插件,但可以从下到名为jQuery Web Sockets Plugin v0.0.1的插件。要使用此插件你必须有jquery(废话),而该插...

weixin_35036750的博客 565

HTML5的威胁:WebSocket与稳定的标准

作者:Cameron Laird 值得庆贺:这是您开设真正的办事处并且第一笔投资如期而至之后的第一个周五。这将会是一个美好的周末。HTML5 拥有您需要的技术,可让您基于 Web 的大型多玩家游戏的理想变成现实。浏览器中的硬件加速之争确实存在,而您将成为这方面的领路人。 直到周一,您才发现您已经完成的所有测试,以及您准备好的所有演示都已经没有任何意义。您的网站崩溃,游戏卡住,而且您似乎

my65554485的专栏 3805

html4和html5

H5具有双重含义:技术层面指HTML5标准,提供丰富的网页功能(如多媒体支持、图形动画、本地存储等);应用层面指在中国互联网环境中特指的移动端营销页面,具有跨平台、轻量级、社交传播等特点。HTML5之所以能实现这些特性,主要得益于其原生支持多媒体、移动设备API和CSS3动画,克服了HTML4依赖插件、功能受限等缺陷。移动互联网的兴起与HTML5技术的成熟共同推动了H5页面的流行。

2302_80729149的博客 649

直播源代码中WebSocket+MSE——HTML5 直播技术解析

当前为了满足比较火热的移动 Web 端直播需求,一系列的 HTML5 直播技术迅速的发展起来。 常见的可用于 HTML5 的直播技术有 HLS、WebSocket 与 WebRTC。今天我向大家介绍WebSocket 与 MSE 相关的技术要点,并在最后通过一个实例来展示具体用法。 文章大纲 WebSocket 协议介绍 WebSocket Client/Server API介绍 MSE 介绍 fMP4 介绍 Demo 展示 WebSocket 通常的 Web 应用都是围绕着 HTTP 的请求/响应模型构建

云豹直播源码 1038

k线图html5插件,Kline 一个JavaScript K线图插件

Kline 本项目扒了某网站的K线插件做了一些封装和二次开发,使其更加便于使用和修改,方便后来的开发者. 修改主要涉及以下几个点:使用 webpack 打包 css/images/html使用 ES6 + Babel 对原有代码进行了拆分和重构删除了一些不必要的逻辑把源码中可配置的部分抽出来添加了对 websocket(stomp over websocket) 连接方式的支持增加对外接口及...

weixin_42465238的博客 3722

html5 websocket插件,html5实现的WebSocket一个小例子(附代码)

本篇文章给大家带来的内容是关于html5实现的WebSocket一个小例子(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。客户端代码:var socket;if ("WebSocket" in window) {var ws = new WebSocket("ws://127.0.0.1:8181");socket = ws;ws.onopen = function() ...

weixin_32279911的博客 289

HTML发展,HTML4与HTML5?

HTML(超文本标记语言)是用于创建网页和网页应用的标准标记语言。自1990年代初首次发布以来,HTML已经经历了多个版本的更新,每个版本都引入了新特性、改进和规范。以下是HTML主要版本的发展历程和区别:在下面的案例中: HTML5 在下面的案例中: 参考 https://www.w3.org/ https://developer.mozilla.org/zh-CN/ https://html5doctor.com/ https://html.spec.whatwg.org/multipage/ htt

Dd_ddc的博客 2193

ue4html插件,UE4插件Remote Contro lWeb Interface使用教程

对于UE4程序与外部网页交互问题,UE4提供了Remote Control Web Interface插件,使用这个插件可轻松实现UE4与Web端的双向通信,其特性如下:可将网页控件绑定到远程属性;双向通信网络套接字服务器与通信;兼容REST;HTML/CSS/JavaScript/React框架;支持的浏览器:Chrome、Firefox、Safari;支持的开发平台:Win64、Mac;支持的...

weixin_30110807的博客 2269
上一篇: 我的web开发学习3--Ajax原理和使用
下一篇: Design Pattern: Mediator 模式
zzulp
博客等级 码龄19年 464粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值