`

WebSocket服务器端与客户端交互

阅读更多
webSocket服务器端怎么确定客户端接收到服务器端发送的消息,即消息可靠性:
 
而解决方案,就是让服务器和客户端能够发送 Ping/Pong Frame(RFC 6455 - The WebSocket Protocol)。这种 Frame 是一种特殊的数据包,它只包含一些元数据而不需要真正的 Data Payload,可以在不影响 Application 的情况下维持住中间网络的连接状态。
 
Ping和Pong是websocket里的心跳,用来保证客户端是在线的,一般来说只有服务端给客户端发送Ping,然后客户端发送Pong来回应,表明自己仍然在线。
 
 
Websocket是一个全新的、独立的协议,基于TCP协议,与http协议兼容、却不会融入http协议,仅仅作为html5的一部,与http协议不同的请求/响应模式不同,Websocket在建立连接之前有一个Handshake(Opening Handshake)过程,在关闭连接前也有一个Handshake(Closing Handshake)过程,建立连接之后,双方即可双向通信。
 
WebSocket:数据传输,客户端和服务器连接成功后,就可以进行通信了,通信协议格式是WebSocket格式,服务器端采用Tcp Socket方式接收数据,进行解析
Websocket协议通过序列化的数据帧传输数据。数据封包协议中定义了opcode、payload length、Payload data等字段。其中要求:
  1. 客户端向服务器传输的数据帧必须进行掩码处理:服务器若接收到未经过掩码处理的数据帧,则必须主动关闭连接。
  2. 服务器向客户端传输的数据帧一定不能进行掩码处理。客户端若接收到经过掩码处理的数据帧,则必须主动关闭连接。
针对上情况,发现错误的一方可向对方发送close帧(状态码是1002,表示协议错误),以关闭连接。
 
WebSocket的RFC标准是不会产生粘包、半包问题的
 
WebSocket与TCP、HTTP的关系
WebSocket与http协议一样都是基于TCP的,所以他们都是可靠的协议,Web开发者调用的WebSocket的send函数在browser的实现中最终都是通过TCP的系统接口进行传输的。
WebSocket和Http协议一样都属于应用层的协议,那么他们之间有没有什么关系呢?答案是肯定的,WebSocket在建立握手连接时,数据是通过http协议传输的,但是在建立连接之后,真正的数据传输阶段是不需要http协议参与的。
 
 
 
 
 
1这个操作码(Opcode)来传输文本的。没错,1这个操作码就是传输文本(UTF-8)的。在分片过程中把操作码设置为0,0也只是分片时用的。操作码是4位的,取值当然不止这两个,除了指定传输数据类型外还有其它用途的操作码。
   规范文档中也提供了一个表格
 
opcode
Meaning
描述
Reference
0XXXXXXX
数据帧
字节的最高位bit为0
 
0
Continuation Frame
 
RFC 6455
1
Text Frame
文本(UTF-8)数据
RFC 6455
2
Binary Frame
二进制数据
RFC 6455
3-7
 
保留
 
1XXXXXXX
控制帧
字节的最高位bit为1
 
8
Connection Close Frame
服务器向客户端请求结束当前连接
RFC 6455
9
Ping Frame
服务器向客户端发送一个Ping帧
RFC 6455
10
Pong Frame
客户端返回给服务器端一个Pong帧
RFC 6455
11-15
 
保留
 

 

分享到:
评论

相关推荐

    WebSocket服务器端和客户端示例

    标题中的“WebSocket服务器端和客户端示例”指的是一个完整的WebSocket通信系统的实例,包括了服务器端和客户端两部分。服务器端是基于.Net Framework 4.5的WinForm应用,这表明它使用C#语言编写,并且运行在Windows...

    c++ websocket服务器和html客户端

    1. **WebSocket服务器**:使用C++编写,实现了WebSocket服务器端。C++是一种通用的、面向对象的编程语言,其强大的性能和底层控制能力使其成为构建网络服务的理想选择。WebSocket服务器的主要任务是接收来自客户端的...

    简单实现了websocket功能:websocket客户端、winformsocket客户端

    在本项目中,"简单实现了websocket功能:websocket客户端、winformsocket客户端",意味着我们有两个关键部分:WebSocket服务器端和基于WinForm的客户端。 WebSocket客户端通常是一个应用程序,它通过WebSocket协议...

    c# winform快速建websocket客户端源码 wpf快速搭建websocket客户端 c#简单建立websocket

    WebSocket协议作为一种在单个TCP连接上进行全双工通信的技术,使得客户端和服务器之间能够进行低延迟、高效率的数据交换,非常适合于实时推送通知、在线聊天、游戏实时更新等场景。使用C# WinForm结合WebSocket...

    WebSocket服务器端+Html5客户端

    这个压缩包文件包含的资源很可能是用于创建WebSocket服务器端和HTML5客户端的示例或框架。 WebSocket协议是在2011年被IETF(互联网工程任务组)标准化的,它的设计目标是提供一种让Web应用可以直接与服务器进行全...

    MFC websocket服务器和客户端

    - **监听与接受连接**:服务器端首先需要创建一个监听套接字,并设置为监听模式,等待客户端的连接请求。 - **握手处理**:当收到客户端的HTTP Upgrade请求时,服务器需要响应一个HTTP 101状态码,确认升级到...

    C#+Websocket技术+客户端与服务信息握手_(聊天室Demo)

    HTML5规范在传统的web交互基础上为我们带来了众多的新...具体来讲,我们在客户端构建一个websocket实例,并且为它绑定一个需要连接到的服务器地址,当客户端连接服务端的时候,会向服务端发送一个类似下面的http报文:

    webSocket 服务器端的简单实现

    在这个"WebSocket服务器端的简单实现"中,我们可能会学习到以下关键知识点: 1. **WebSocket协议基础**:WebSocket协议建立在TCP协议之上,通过握手过程建立起持久的连接。握手过程中,客户端发送一个HTTP Upgrade...

    websocket-demo前后端交互的实例代码

    - **测试**:示例可能包含一个简单的HTML页面,用于展示如何与WebSocket服务器进行交互,可能还有配套的JavaScript代码来测试连接和消息传递。 学习和理解`websocket-demo`这个示例,有助于开发者掌握WebSocket的...

    C# WinForm客户端连接 WebSocket

    在本文中,我们将深入探讨如何使用C# WinForm应用程序实现WebSocket客户端,以便与WebSocket服务器进行实时数据通信。Visual Studio 2019是我们的开发环境,我们将利用其强大的功能来构建用户界面,并集成WebSocket...

    websocket实现服务端与客户端通信

    推送服务通常用于将服务器端的更新实时推送到客户端,如新闻通知、系统更新等。WebSocket提供了理想的推送机制,因为一旦连接建立,服务器就能主动向客户端发送数据,而不需要客户端不断轮询。 总的来说,WebSocket...

    WebSocket区分不同客户端两种方法(HttpSession和@PathParam)

    接下来,在WebSocket服务器端,需要通过自定义`ServerEndpointConfig.Configurator`来修改握手过程,以便获取`HttpSession`。具体实现如下: ```java public class GetHttpSessionConfigurator extends ...

Global site tag (gtag.js) - Google Analytics