首页 > Web开发 > 详细

websocket

时间:2020-03-05 16:56:40      阅读:103      评论:0      收藏:0      [点我收藏+]

概述

websocket是一种改进的tcp的连接,它在连接的时候借助HTTP的协议进行连接,连接成功之后就一直保持连接,保持连接的过程中就可以实现双向消息发送,跟tcp的不同是他只需要在连接的时候加上报文头,之后在通信的时候就不需要再发送了。

其中有一个4位的操作码,用来表示发送的报文类型,分别如下:

 41         Contin = 0x0,   //表示连续消息片断
 42         Text = 0x1,     //表示文本消息片断
 43         Binary = 0x2,   //表未二进制消息片断
 44         // 0x3 - 0x7 非控制帧保留
 45         Close = 0x8,    //表示连接关闭
 46         Ping = 0x9,     //表示心跳检查的ping
 47         Pong = 0xA,     //表示心跳检查的pong
 48         // 0xB - 0xF 控制帧保留
 49         Unkown

ping-pong心跳检测

PING报文

ping是要求应答信号的,就是收到ping报文后,必须返回应答报文给发送方。
不同的websocket框架对应答报文的处理不一样,比如Tomcat框架,会将收到打ping报文原封不动的返回给发送方。

客户端和服务端一般是不会主动发送ping报文,必须要使用者主动发送。

PONG报文

pong是单向检测,收到之后不需要返回报文给pong报文的发送方。比如Tomcat,可以添加WsPongMessage的messagehandler进行处理。

心跳检测

对于任何一段的正常或异常关闭、比如杀进程,都是能通过关闭时间检测到,这是没问题。一个检测不到的情况就是

https://www.cnblogs.com/xuemanjiangnan/p/7658362.html

http://www.itkeyword.com/doc/7024562029513903x491/tomcat-websockets-javax-websocket-session-isopen-not-always-accurate

https://blog.csdn.net/ShareUs/article/details/85246287

https://www.zhihu.com/question/20215561

https://www.cnblogs.com/interdrp/p/7903736.html

https://blog.csdn.net/u011423258/article/details/82764164

https://blog.csdn.net/zero_no1/article/details/79290566

 

最大连接数

https://blog.csdn.net/z915412321/article/details/52261229

Tomcat参数限制:https://blog.csdn.net/d81895606/article/details/100883085

不同框架实现的服务器:https://blog.csdn.net/thomashtq/article/details/46738253

客户端不同的层面有不同的限制

比如说操作系统的端口号最大只有六万多个,一个进程又不可能把这些端口号全都用掉

很多浏览器对连接数也有限制: IE-16个 谷歌-250个 火狐-200个

 

服务端

比如说Tomcat,好像有10000个限制,这个还没有确认。但是如果连接数很大的话会造成heap内存直接溢出,因此。要设置启动参数调大heap的大小。参数时:-Xmx1024m

Dorg.apache.tomcat.websocket.executorMaxSize=10000这个参数设了也没用

websocket

原文:https://www.cnblogs.com/suntp/p/12378243.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!