HTML5 中websocket长连接的具体实现方法

HTML5 WebSocket(Client) + JavaWeb(Server) 实现简单的聊天室功能 介绍: WebSocket是HTML5规范新引入的功能,用于解决浏览器与后台服务器双向通讯的问题,使用WebSocket技术,后台可以随时向前端推送消息,以保证前后台状态统一,在传统的无状态HTTP协议中,这是“无法做到”的。 原理: 客户端由HTML5 websocket监听,客户端发送长连接,后台请求阻塞实现服务端消息实时更新. 服务端获得当前连接中的 阅读详情
 HTML5中通过调用与数据通信相关的Web Socket API,实现从服务器中推送信息到客户端。
Socket又称为套接字,是基于W3C标准开发在一个TCP接口中进行双向通信的技术。通常
情况下,Socket用于描述IP地址和端口,是通信过程中的一个字符句柄。当服务器端又多个应用服务绑定一个Socket时,
通过通信中的字符句柄,实现不同端口对应不同应用服务功能。目前,大部分浏览器都支持HTML5中Socket API的运行。

WebSocket连接服务器和客户端,这个链接是一个实时的长连接,服务器端一旦与客户端建立了双向链接,
就可以将数据推送到Socket中,客户端只要有一个Socket绑定的地址和端口与服务器建立联系,就可以接收推送来的数据。

WebSocket API 的使用分为以下几个步骤:

步骤1、 创建连接,新建一个WebSocket对象十分的方便,代码如下:
var host = "ws://echo.websocket.org/";
var socket=new WebSocket(host);
注意:其中,URL必须以“ws”字符开头,剩余部分可以使用像HTTP地址一样来编写。该地址没有使用
HTTP协议写法,因为它的属性为WebSocket URL;URL必须由4个部分组成,分别是通信标记(ws)、主机名称(host),端口号(port)
及WebSocket Server.

步骤2,发送数据。当WebSocket对象与服务器建立联系后,使用如下代码发送数据:
socket.send(dataInfo);
注意:其中,objWs为新创建的WebSocket对象,send()方法中的dataInfo参数为字符类型,即只能使用文本数据或者将JSON对象转换成文本内容的数据格式。

步骤3,接收数据。客户端添加事件机制接收服务器发送来的数据,代码如下:
socket.onmessage=function(event){
    //弹出收到的信息
    alert(event.data);
    //其他代码
}
其中,通过回调函数中event对象的"data"属性来获取服务器端发送的数据内容,该内容可以是一个字符串或者JSON对象。

步骤4 状态标志。通过WebSocket对象的“readyState”属性记录连接过程中的状态值。
"readyState"属性是一个连接的状态标志,用于获取WebSocket对象在连接,打开,变比中和关闭时的状态。该状态标志共有4中属性值,如下表所示:


————————————————————————————————————
    属性值        属性常量        描述
————————————————————————————————————
    0        CONNECTING        连接尚未建立
        1        OPEN            WebSocket的链接已经建立
    2        CLOSING            连接正在关闭
    3        CLOSED            连接已经关闭或不可用
————————————————————————————————————

WebSocket对象在连接过程中,通过侦测这个状态标志的变化,可以获取服务器端与客户端连接的状态,并将连接状态已状态码形式返回给客户端。

步骤5 关闭socket连接。

socket.close();

————————————————————————————————————————————————————————————————
在实际应用中,socket服务器端的代码可以是Python,node.js,java,php。在这里我可以使用 http://www.websocket.org/ 网站提供的,socket
服务端。协议地址为:ws://echo.websocket.org/
完整代码如下:
————————————————————————————————————————————————————————————————
<html>
<head>
<title>Jack张WebSocket实例</title>

<style>
html,body{font:normal 14px;margin:0 auto;}
#log {width:440px; 
            height:270px; 
            text-align:left;
            overflow:auto;margin:0px auto;
            font-weight:bold;color:#F8F8F8;
            }
#msg {width:330px;margin:0px auto;}
#imagebg{
    background-image: url(images/images.jpg);
    background-repeat: no-repeat;
    background-position: center top;
    height:643px;
    overflow:hidden;
    text-align:center;
    padding-top:120px;
}

</style>

<script>
//声明一个socket
var socket;
//初始化方法
function init(){
  var host = "ws://echo.websocket.org/";//声明host注意:是ws协议
  try{
    socket = new WebSocket(host);//新创建一个socket对象
    log('WebSocket - status '+socket.readyState);//将连接的状态信息显示在log
    socket.onopen    = function(msg){ log("Welcome - status "+this.readyState); };//监听打开连接
    socket.onmessage = function(msg){ log("Received: "+msg.data); };//监听当接收信息时触发匿名函数
    socket.onclose   = function(msg){ log("Disconnected - status "+this.readyState); };//关闭连接
  }
  catch(ex){ log(ex); }
  $("msg").focus();
}
//声明一个发送信息方法
function send(){
  var txt,msg;
  txt = $("msg");
  msg = txt.value;
  if(!msg){ alert("Message can not be empty"); return; }
  txt.value="";
  txt.focus();
  try{ socket.send(msg); log('Sent: '+msg); } catch(ex){ log(ex); }
}
//声明一个对开连接,关闭socket方法
function quit(){
  log("Goodbye!");
  socket.close();
  socket=null;
}

// 根据id获取DOM元素
function $(id){ return document.getElementById(id); }
//将信息显示在id为log的div中
function log(msg){ $("log").innerHTML+="<br>"+msg; }
//键盘事件(回车)
function onkey(event){ if(event.keyCode==13){ send(); } }
</script>

</head>
<body onload="init()">
<div id="imagebg">
    <div style="width:520px;text-align:left;margin:0px auto;color:#000;"> <a href="http://weibo.com/jackyo"><strong>新浪微博:Jack张</strong& gt; </div>
    <br>
     <div id="log"></div>
     <input id="msg" type="textbox" onkeypress="onkey(event)"/>
     <button onclick="send()">发送</button>
     <button onclick="quit()">断开</button>

</div>
</body>
</html>
谈谈http/tcp的长连接和websocket的长连接 长久以来 tcp http websocket socket的词汇区别及意义一直搞不清楚,本文带你了解。 阅读详情

相关推荐

【全解析 | PTA】浙大版《Python 程序设计》题目集-第一章

Python浙大版PTA题解

wzhh_的博客 5527

H5中webSocket 的基本使用

监听 WebSocket 事件:通过为 WebSocket 对象绑定各种事件处理程序来监听不同的事件,以便在特定事件发生时执行相应的逻辑。常见的 WebSocket 事件包括连接建立成功、接收到消息、连接关闭等。需要注意的是,WebSocket 需要服务器端支持并实现相应的协议和逻辑。在事件处理程序中,可以访问接收到的消息内容,并根据需要进行处理和展示。这只是一个简单的示例,实际应用中可能涉及更多复杂的逻辑和处理方式。断开连接:如果希望关闭 WebSocket 连接,可以调用 WebSocket 对象的。

weixin_67002441的博客 2029

Transformer模型在语义通信中的实战应用:从信源编码到端到端优化

本文深入探讨了Transformer模型在语义通信中的实战应用,从信源编码到端到端优化。文章分析了Transformer凭借其强大的全局依赖建模能力,如何成为实现高效语义提取与传输的理想架构,并提供了构建可端到端训练系统的具体实现思路与评估方法,旨在为下一代智能通信系统提供技术参考。

o9p0q1的博客 691

HTML5 WebSocket长连接

HTML5 WebSocket实现长连接 先介绍一下WebSocket WebSocket的概念 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的...

low666的博客 2432

从时序精度到视觉盛宴:PY32F030驱动WS2812的工程艺术与避坑指南

本文深入探讨了基于PY32F030微控制器驱动WS2812智能LED的完整解决方案。通过精确的时序控制、硬件PWM结合DMA传输技术,实现了稳定可靠的驱动效果,并提供了电源管理、信号完整性和常见问题排查等实用避坑指南,帮助开发者轻松应对严格的纳秒级时序挑战。

wind6的博客 120

UnityWebGL异常捕获全攻略:从报错提示到完美解决的3种配置方案

本文详细解析了UnityWebGL项目中异常捕获的三种核心配置方案:禁用异常、仅捕获显式异常以及完全捕获异常(无堆栈跟踪)。通过对比不同方案在构建体积、运行性能及错误信息详细度上的差异,帮助开发者根据开发、测试与发布阶段的不同需求,选择并配置最优的异常处理策略,从而有效提升WebGL应用的调试效率和线上稳定性。

5f4d3s2a1q的博客 398

HTML5中的WebSocket

最近在看客户端与服务器之间的数据交换问题,之前只是知道ajax与WebSocket,知其然不知其所以然,记录一下。 1.何为WebSocket WebSocket是一种在HTML5中提供的在单个TCP连接上建立全双工通信的协议,浏览器和服务器之间只需要完成一次握手,两者就可以进行持久连接,从而完成数据的双向传输。注意:Socket 是传输控制层协议,WebSocket 是应用层协议。 为了从...

在下魔王ii的博客 4754

恒定跨导的奥秘:基于1:3电流镜的轨到轨运放输入级设计与仿真验证

本文深入探讨了基于1:3电流镜的轨到轨运放输入级设计,重点分析了恒定跨导(GM)的实现原理与仿真验证。通过精确的电流补偿机制和工艺参数优化,解决了传统运放在电源轨附近跨导下降的问题,为模拟集成电路设计提供了可靠的低电压解决方案。

weixin_33686714的博客 516

html 连接 websocket 示例

这个示例使用了一个名为 “ws://example.com/ws” 的 WebSocket 服务器,您需要将其替换为您实际使用的 WebSocket 服务器地址。以下是一个简单的 HTML 页面示例,它连接到 WebSocket 服务器并包含一个文本框、一个发送按钮以及 WebSocket 连接、读取和关闭事件的监听。// 2. 监听 WebSocket 连接事件。// 4. 监听 WebSocket 关闭事件。// 5. 监听 WebSocket 出错事件。

洪晓鸿 2502

基于matlab实现的水果识别系统设计

本项目针对多种常见水果混合的图像,利用 Matlab 软件,对水果的识别进行研究。根据水果和背景的差别选取阈值,对去噪增强对比度后的图像进行二值化处理。再对图像进行边缘检测,选定连通区域,标记后再对不同种水果的颜色,形状,大小等特征进行快速识别水果,从而实现对水果的正确分拣。:水果识别、MATLAB、数字图像处理。

热情、奔放、快乐编程! 4854

正弦波、方波、三角波和锯齿波信号发生器——Multisim电路仿真

调节方波信号的占空比,也就是改变输出信号的高低电平时间比例,可以设置电容不同的充放电时间来达到目的,RP2可以使得电容具有不同的充放电时间,其中二极管起到限制电流流向的作用。假设U+>U,那么输出端就达到正向饱和,电容开始充电,当电容电压大于同相输入端电压时,此时电容开始放电,由此往复,从而产生方波信号。3,正反馈支路占优势,电路开始起振并不是稳定的,振荡会不断增大,最终将导致运放饱和,输出的波形是削波失真的正弦波。通常在电路中引入负反馈,例如使用负温度系数的热敏电阻,以自动稳定增益,防止输出波形失真。

XU157303764的博客 5321

WebSocket | html创建websocket链接

html创建websocket链接, 创建websocket链接,创建websocket连接

苏老师的博客 2373

23、电生理与CSD分析:探索大脑活动的前沿技术

本文介绍了电生理与电流源密度(CSD)分析在探索大脑活动中的前沿应用。从电生理技术的发展现状,到局部场电位(LFPs)的起源与解释,重点阐述了CSD分析的原理、实验方法及其在绘制皮层兴奋流、解析突触输入和研究自发振荡中的广泛应用。文章还总结了该领域的优势与挑战,并展望了技术改进、多模态融合、数据分析创新及临床拓展的未来方向,展示了这些技术在揭示大脑功能机制中的关键作用。

Apple的专栏 121

HTML5 中websocket长连接的具体实现方法(转)

HTML5中通过调用与数据通信相关的Web Socket API,实现从服务器中推送信息到客户端。 Socket又称为套接字,是基于W3C标准开发在一个TCP接口中进行双向通信的技术。通常 情况下,Socket用于描述IP地址和端口,是通信过程中的一个字符句柄。当服务器端又多个应用服务绑定一个Socket时, 通过通信中的字符句柄,实现不同端口对应不同应用服务功能。目前,大部分浏览器都支持HTML...

343

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

websocket 实现长连接原理

一、WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)首先HTTP有1.1和1.0之说,也就是所谓的keep-alive,把多个HTTP请求合并为一个,但是Websocket其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已,也就是说它是HTTP协议上的一种补充可以通过这...

大碍桃花开 7万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

HTTP长连接和WebSocket长连接的区别

要理解HTTP长连接和websocket长连接的区别,首先要理解一下什么是HTTP的长连接和短连接。 一、HTTP的长连接和短连接区别 首先需要消除一个误解:HTTP协议是基于请求/响应模式的,因此客户端请求后只要服务端给了响应,本次HTTP请求就结束了,没有长连接这一说。那么自然也就没有短连接这一说了。 所谓的HTTP分为长连接和短连接,其实本质上是说的TCP连接。TCP连接是一个双向的通道,它是可以保持一段时间不关闭的,因此TCP连接才有真正的长连接和短连接这一说。 HTTP协议是应用层的协议,

和光同尘的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Jack张讲HTML5中websocket长连接的实现方法

HTML5中通过调用与数据通信相关的Web Socket API,实现从服务器中推送信息到客户端。 Socket又称为套接字,是基于W3C标准开发在一个TCP接口中进行双向通信的技术。通常 情况下,Socket用于描述IP地址和端口,是通信过程中的一个字符句柄。当服务器端又多个应用服务绑定一个Socket时, 通过通信中的字符句柄,实现不同端口对应不同应用服务功能。目前,大部分浏览器都支

兄弟连_战地日记 1699

HTML5 WebSocket的入门使用

HTML5 WebSocket:长连接,客户端与服务端可以保持长时间的通信。 一、具体步骤: 1、创建一个websocket实例,连接远程服务器并且需要一个链接服务器的url let baseUrl = &amp;quot;ws://echo.websocket.org/&amp;quot; let webSocket = new WebSocket(baseUrl) 注意,这里的URL前缀不再是HTTP协议,而是 ‘ws://’...

一只路过的小码农 4763

【WebSocket】WebSocket长连接与反向代理

一、WebSocket协议 WebSocket是HTML5下一种新的协议。 它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的。 它与HTTP一样通过已建立的TCP连接来传输数据,但是它和HTTP最大不同是: 1. WebSocket是一种双向通信协议。在建立连接后,WebSocket服务器端和客户端都能主动向对方发送或接收数据,就像Socket一样; 2. WebSocket需要像TCP一样,先建立连接,连接成功后才能相互通信。 WebSo...

michaelwoshi的博客 6621

HTML5之WebSocket(仅介绍客户端的实现)

一、传统http连接以及存在的问题         对于传统的http连接有如下优缺点         优点:连接比较简单         缺点:每次都要重新发起连接请求并建立新的连接(Http1.1才有了keepalive),并且需要依赖session和cookie实现用户状态的跟踪。 二、websockets介绍         websockets是html5引入的Ja

sunfeizhi的专栏 8249

HTML5 WebSocket 详解

WebSocket 前世今生 众所周知,Web 应用的交互过程通常是客户端通过浏览器发出一个请求,服务器端接收请求后进行处理并返回结果给客户端,客户端浏览器将信息呈现,这种机制对于信息变化不是特别频繁的应用尚可,但对于实时要求高、海量并发的应用来说显得捉襟见肘,尤其在当前业界移动互联网蓬勃发展的趋势下,高并发与用户实时响应是 Web 应用经常面临的问题,比如金融证券的实时信息,Web 导航应用中

纸上得来终觉浅,绝知此事要躬行 5852

Golang长连接-基于WebSocket

Websocket简介 WebSocket可以实现客户端与服务器间双向、基于消息的文本或二进制数据传输。它是浏览器中最靠近套接字的API。但WebSocket连接远远不是一个网络套接字,因为浏览器在这个简单的API之后隐藏了所有的复杂性,而且还提供了更多服务: 连接协商和同源策略; 与既有HTTP基础设施的互操作; 基于消息的通信和高效消息分帧; 子协议协商及可扩展能力。 WebSocket资源URL采用了自定义模式:ws表示纯文本通信(如ws://example.com/socket),wss表示使用

5044
上一篇: 工作流整理
下一篇: HTML5 中websocket长连接的具体实现方法
烟云冬少
博客等级 码龄19年 20粉丝 17原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值