Web Socket

WebSocket是一种新型协议,它借用了HTTP进行握手但后续通信不再依赖HTTP。通过WebSocket,服务器和客户端可以双向通信,无需客户端频繁发起请求。在握手过程中,浏览器与服务器通过TCP建立连接,然后通过HTTP协议进行版本协商和数据交换,成功后触发onopen事件,允许双方发送数据。WebSocket的优势在于减少了网络带宽消耗和服务器资源,实现了高效的数据传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTTP/1.0中大多实现为每个请求/响应交换使用新的连接

HTTP/1.1中一个连接可用一次或多次请求/响应交换

HTTP协议中,服务端不能主动联系客户端,只能由客户端发起

webSocket服务器和客户端均可主动发送数据

 

WebSocket对象提供了一组API,用于创建和管理WebSocket连接,以及通过连接发送的接收数据

WebSocket其实是一个新协议,根HTTP协议基本没关系,只是为了兼容现有浏览器的握手规范而已,

借用了HTTP的协议来完成握手。再送发数据时就不需要HTTP协议了。

建立接连的握手

当Web应用程序用new WebSocket(url)接口时,浏览器就开始与地址为url的服务器建立握手连接的过程

1.浏览器与WebSocket服务器通过TCP握手建立连接,如果这个建立连接失败,那么后面的过程就不会执行,

Web应用程序将收到错误消息通知

2.在TCP建立连接成功后,浏览器通过http协议传送WebSocket支持的版本号,协议的字版本号,原始地址,

主机地址等一系列字段给服务器端

3.WebSocket服务器收到浏览器发送来的请求后,如果数据包数据和格式正确,客户端和服务器端的协议版本号匹配等,

就接受本次握手连接,并给出相应的数据回复,同样回复的数据包也是采用http协议传输。

4.浏览器收到服务器回复的数据包后,如果数据包内容 格式 都没有问题,就表示本次连接成功,触发onopen消息,

此时Web 开发者就可以在此时通过send借口向服务器发送数据;否则握手连接失败,Web应用程序会收到onerror消息,

并知道连接失败的原因。

WebSocket优点

客户端与服务器都可以主动传送数据给对方

不用频率创建TCP请求及销毁请求,减少网络宽带资源的占用,节省服务器资源

WebSocket事件

事件事件处理程序说明

open

Socket.onopen

建立soocket连接时触发

message

Socket.onmessage

客户端从服务器接收数据时触发

error

Socket.onerror

连接发生错误时触发

close

Socket.onclose

连接被关闭时触发

        var socket = new WebSocket("ws://echo.websocket.org");
        socket.onopen = function(){
            socket.send('hello');
        }
        socket.onmessage = function(e){//响应回来时触发
            console.log(e);
            console.log(e.data);
            socket.close();
        }
        socket.onclose = function(){
            console.log('close');;
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值