首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

查看Socket断开原因及加入心跳机制防止自动断开连接

【转载请注明出处】:https://blog.csdn.net/huahao1989/article/details/107804286 一般情况下,前端页面连接WebSocket服务的时候都是通过Nginx...用于期望收到状态码时连接非正常关闭 (也就是说, 没有发送关闭帧). 1007 Unsupported Data 由于收到了格式不符的数据而断开连接 (如文本消息中包含了非 UTF-8...这是一个通用状态码, 用于不适合使用 1003 和 1009 状态码的场景. 1009 CLOSE_TOO_LARGE 由于收到过大的数据帧而断开连接....为了保证socket稳定,不断开,最好也是最简单的办法是添加一些逻辑,一直保持socket处在连接状态。...常见的做法就是间隔发ping消息给服务端,服务端接收到这个消息之后返回pong消息,以此来保持心跳,以防sock断开

5.2K20

Nginx支持WebSocket反向代理-学习小结

此外,由于WebSocket连接长期存在,与HTTP使用的典型短期连接相反,反向代理需要允许这些连接保持打开状态,而不是关闭它们,因为它们似乎处于空闲状态。...一旦WebSocket连接建立后,后续数据都以帧序列的形式传输。在客户端断开WebSocket连接或Server端中断连接前,不需要客户端和服务端重新发起连接请求。...3)设置心跳为50s,即可长期保持Websocket断开 Nginx代理webSocket经常中断的解决方法(也就是如何保持连接) 现象描述:用nginx反代代理某个业务,发现平均1分钟左右,就会出现...webSocket连接中断,然后查看了一下,是nginx出现的问题。...比如说,我设置了10分钟,那么如果我10分钟内有通讯,或者10分钟内有做心跳的话,是可以保持连接中断的,详细看个人需求 WebSocket与Socket的关系 -  Socket其实并不是一个协议,而是为了方便使用

2.8K40
您找到你想要的搜索结果了吗?
是的
没有找到

WebSocket

WebSocket中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 长连接: 建立连接后不管是否使用,都保持TCP连接。但是长连接并不是永久连接。...过程:建立连接–>传输数据…(保持连接)…传输数据–>关闭连接连接: 短连接是一次性连接,即浏览器和服务器每次进行操作时都需要重新建立TCP连接,操作结束后即中断连接。...,TCP 连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求 WebSocket连接与HTTP长连接区别 既然HTTP也能实现长连接,为什么还要用WebSocket呢?...)进行通信,并且此连接状态会一直持续到其中一方断开为止。...区别三 由于HTTP的单向请求,如果服务端有连续的状态变化时,客户端就需要频繁的通过请求实现长轮询来获取服务端的最新变化状态,轮询效率较低,且非常浪费资源(因为需要不停的连接,或者HTTP连接始终打开)

25430

WebSocket

WebSocket中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 长连接: 建立连接后不管是否使用,都保持TCP连接。但是长连接并不是永久连接。...过程:建立连接–>传输数据…(保持连接)…传输数据–>关闭连接连接: 短连接是一次性连接,即浏览器和服务器每次进行操作时都需要重新建立TCP连接,操作结束后即中断连接。...,TCP 连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求 WebSocket连接与HTTP长连接区别 既然HTTP也能实现长连接,为什么还要用WebSocket呢?...)进行通信,并且此连接状态会一直持续到其中一方断开为止。...区别三 由于HTTP的单向请求,如果服务端有连续的状态变化时,客户端就需要频繁的通过请求实现长轮询来获取服务端的最新变化状态,轮询效率较低,且非常浪费资源(因为需要不停的连接,或者HTTP连接始终打开

1.4K20

rpc框架之 thrift连接池实现

int minSize = 1;//池中保持激活状态的最少连接个数 int maxIdleSecond = 300;//最大空闲时间(秒),超过该时间的空闲时间的连接将被关闭...* * @param poolSize 连接池大小 * @param minSize 池中保持激活的最少连接数 *...(默认最大空闲时间300秒) * * @param poolSize 连接池大小 * @param minSize 池中保持激活的最少连接数 * @param...4.get()方法从数组中捞一个可用的连接出来,取的时候要考虑到唤醒"沉睡"连接的情况,即如果当前池中只有2个活动连接,这时又来了请求,没有活动连接了,要从池中把断开连接叫醒一个。...2080503518,localhost:9001 超过空闲时间阀值被断开! 当前活动连接数:1 开始检测空闲连接... 当前活动连接数:1 开始检测空闲连接...

3.2K80

记一次 websocket 实战,“我没有拿到回执呀”

脑图如下: 实战代码 弄清需求后,就开始刷刷刷写代码了✍(这里实现 web 前端 A1 的逻辑) 此处通过wss://echo.websocket.org 来模拟连接地址: 重点说明: 因为拿到 回执...比如:在 A2 中用户输入传递给了 C2,然后 C2 把回执给了 C1,如果此时 websocket中断的,等待重连后,C1 是否还能把消息准确推给 A1?...页面崩溃下的 websocket 断开如何处理? “我没拿到回执呀”,websocket 因为网络环境断开的可能情况是什么?websocket 断开在不同浏览器下的表现是怎样的?.........在逐层理解的过程中,就会对 websocket 有新的认识~ 要点整理 通过这次实战,也梳理了些概念点: WebSocket 与 HTTP 和 HTTPS 使用相同的 TCP 端口; RFC 6455...、2 (WebSocket.CLOSING)连接正在关闭、3 (WebSocket.CLOSED)连接已关闭或者没有链接成功; websocket 基本属性和方法-MDN; ......

34520

WebSocket断开原因、心跳机制防止自动断开连接

1、断开原因 WebSocket断开的原因有很多,最好在WebSocket断开时,将错误打印出来。...) console.log(e) } 错误状态码: WebSocket断开时,会触发CloseEvent, CloseEvent会在连接关闭时发送给使用 WebSockets 的客户端....CloseEvent有三个字段需要注意, 通过分析这三个字段,一般就可以找到断开原因 CloseEvent.code: code是错误码,是整数类型 CloseEvent.reason: reason是断开原因...终端离开, 可能因为服务端错误, 也可能因为浏览器正从打开连接的页面跳转离开. 1002 CLOSE_PROTOCOL_ERROR 由于协议错误而中断连接. 1003 CLOSE_UNSUPPORTED...这是一个通用状态码, 用于不适合使用 1003 和 1009 状态码的场景. 1009 CLOSE_TOO_LARGE 由于收到过大的数据帧而断开连接. 1010 Missing Extension 客户端期望服务器商定一个或多个拓展

11.9K40

为什么有了http,还需要websocket,我懂了!

,需要通过WebSocket协议来完成。...下图中分别表示了socket和websocket在网络中的位置常见状态码下面显示了从服务器到客户端的通信的 WebSocket 状态码和错误提示,WebSocket 状态码遵循 RFC 正常关闭连接标准...1003 CLOSE_UNSUPPORTED 端点因为受到不能接受的数据类型而中断连接1004 保留1005 CLOSE_NO_STATUS 保留, 用于提示应用未收到连接关闭的状态码1006 CLOSE_ABNORMAL...期望收到状态码时连接非正常关闭 (也就是说, 没有发送关闭帧)1007 Unsupported Data 收到的数据帧类型不一致而导致连接关闭1008 Policy Violation 收到不符合约定的数据而断开连接...1012 Service Restart 服务器由于重启而断开连接1013 Try Again Later 服务器由于临时原因断开连接, 如服务器过载因此断开一部分客户端连接1015 TLS握手失败关闭连接总结

75461

使用Android WebSocket实现即时通讯功能

连接开启时调用,onMessage()方法在接收到消息时调用,onClose()方法在连接断开时调用,onError()方法在连接出错时调用。...,当然App保活这个问题本身就是个伪命题,我们只能尽可能保活,所以首先就是建一个Service,将websocket的逻辑放入服务中运行并尽可能保活,让websocket保持连接。...BIND_AUTO_CREATE); } } 这里首先创建了一个ServiceConnection匿名类,在里面重写onServiceConnected()和onServiceDisconnected()方法,这两个方法会在活动与服务成功绑定以及连接断开时调用...连接断开,例如网络断开,所以需要保证websocket连接稳定性,这就需要加入心跳检测和重连。...心跳检测其实就是个定时器,每个一段时间检测一次,如果连接断开则重连,Java-WebSocket框架在目前最新版本中有两个重连的方法,分别是reconnect()和reconnectBlocking()

5.3K32

一文吃透 WebSocket 原理

nginx 代理的 websocket 转发,无消息连接会出现超时断开问题。...主动触发包括主动断开连接,客户端主动发送消息给后端 1 主动断开连接 ws.close(); 主动断开连接,根据需要使用,基本很少用到。...在长连接下,有可能很长一段时间都没有数据往来。理论上说,这个连接是一直保持连接的,但是实际情况中,如果中间节点出现什么故障是难以知道的。...客户端则需要断开连接通过 onclose 关闭连接,服务端再次上线时则需要清除之间存的数据,若不清除 则会造成只要请求到服务端的都会被视为离线。...; websocket.send("heartBeat"); } } // 使用:在websocket断开链接时调用网络中断监测 websocket.onclose => ()

1.9K10

Time_Wait详解(译文)

尽管状态图显示的 TIME_WAIT 是客户端结束连接的最终状态,但这并不是说一定是客户端的结束状态才是TIME_WAIT,实际上,这是主动关闭连接(active close)的设备(不管是服务端还是客户端...前面的TCP状态转换图都显示了连接断开的顺序,这里还有另外一种方式断开TCP连接。...通过终止(abort)连接并发送一个RST代替FIN,这可以通过设置socket的SO_LINGER选项为 0 来实现。...虽然在出错的情况下中断连接是非常简单的,但是如果是正常连接的终止该如何做呢?李向情况下,你应该在你的服务器协议设计的时候有一种方法能够告诉客户端让客户端主动断开连接,而不是由服务器发起。...如果你所做的操作的生存周期非常短,可以考虑一些连接池的设计,让连接一直保持打开和可重复使用。最后,如果你必须在客户端频繁的打开和关闭到同一个服务器的连接,可能你需要设计应用级别的关闭方式。

4.8K20

不要小看WebSocket!长连接、有状态、双向、全双工都是王炸技能

就好比异地办公室一样,有台设备一直保持在线,有问题需要沟通的时候,通过这台一直在线的设备沟通就行,这个就是长连接。...长连接 还有一种大家特别熟悉的协议:HTTP,它是无状态的协议,所谓的无状态就是请求与请求之间不存在记忆关系,服务器是不知道客户端的状态的。...WebSockets 允许发送基于消息的数据,类似于 UDP,但具有 TCP 的可靠性,WebSocket 使用 HTTP 作为初始传输机制,但在收到 HTTP 响应后保持 TCP 连接处于活动状态,以便用于在客户端和服务器之间发送消息...WebSocket通过握手来做到客户端与服务器的连接,握手的流程和TCP三次握手类似,握手后,通道保持打开状态,然后客户端和服务端可以保持持久通信,服务器可以独立地向客户端发送数据,而无需客户端请求。...WebSocket过程 第一步:客户端向服务端通过握手协议建立连接 第二步:服务端向客户端回应握手请求 第三步:服务端开始向客户端推送消息 第四步:客户端可以主动断开websocket连接 WebSocket

1.9K30

HTML5(十二)——一文读懂 WebSocket 原理

一、WebSocket 由来 WebSocket 是一个持久化的协议,通过第一次 HTTP Request 建立连接之后,再把通信协议升级成 websocket保持连接状态,后续的数据交换不需要再重复请求...客户端关闭连接如下: ws.close() 然后发送关闭帧给对方,通常会带有关闭连接状态码,常见的状态码如下: 1000 连接正常关闭 1001 端点离线,例如服务器down,或者浏览器已经离开此页面...1002 端点因为协议错误而中断连接 1003 端点因为受到不能接受的数据类型而中断连接 1004 保留 1005 保留, 用于提示应用未收到连接关闭的状态码 1006 端点异常关闭 1007 端点收到的数据帧类型不一致而导致连接关闭...sock.on('end',()=>{ console.log("连接断开") }) }) serve.listen("8888") 使用命令 node serve.js 或node serve...启动服务之后,访问前边创建的html文件访问websocket服务。 四、websocket的优点 第一次通过http建立连接之后,数据交互不用发送http请求,节省了带宽资源。

1.3K30

HTML5(十二)——一文读懂 WebSocket 原理

一、WebSocket 由来 WebSocket 是一个持久化的协议,通过第一次 HTTP Request 建立连接之后,再把通信协议升级成 websocket保持连接状态,后续的数据交换不需要再重复请求...客户端关闭连接如下: ws.close() 然后发送关闭帧给对方,通常会带有关闭连接状态码,常见的状态码如下: 1000 连接正常关闭 1001 端点离线,例如服务器down,或者浏览器已经离开此页面...1002 端点因为协议错误而中断连接 1003 端点因为受到不能接受的数据类型而中断连接 1004 保留 1005 保留, 用于提示应用未收到连接关闭的状态码 1006 端点异常关闭 1007 端点收到的数据帧类型不一致而导致连接关闭...sock.on('end',()=>{ console.log("连接断开") }) }) serve.listen("8888") 使用命令 node serve.js 或node serve...启动服务之后,访问前边创建的html文件访问websocket服务。 四、websocket的优点 第一次通过http建立连接之后,数据交互不用发送http请求,节省了带宽资源。

1.3K30

开发在线客服系统知识点-websocket返回状态码的含义

在读取一个websocket资源的时候,有时候会报错,就会返回一个状态码 这些状态码的含义是如下面列表: 0–999 保留段, 未使用. 1000 CLOSE_NORMAL 正常关闭;...CLOSE_PROTOCOL_ERROR 由于协议错误而中断连接. 1003 CLOSE_UNSUPPORTED 由于接收到不允许的数据类型而断开连接 (如仅接收文本数据的终端接收到了二进制数据...用于期望收到状态码时连接非正常关闭 (也就是说, 没有发送关闭帧). 1007 Unsupported Data 由于收到了格式不符的数据而断开连接 (如文本消息中包含了非 UTF-8 数据...这是一个通用状态码, 用于不适合使用 1003 和 1009 状态码的场景. 1009 CLOSE_TOO_LARGE 由于收到过大的数据帧而断开连接. 1010 Missing Extension...表示连接由于无法完成 TLS 握手而关闭 (例如无法验证服务器证书). 1016–1999 由 WebSocket 标准保留以便未来使用. 2000–2999 由 WebSocket 拓展保留使用

85620

HTML5(十二)——一文读懂 WebSocket 原理

一、WebSocket 由来 WebSocket 是一个持久化的协议,通过第一次 HTTP Request 建立连接之后,再把通信协议升级成 websocket保持连接状态,后续的数据交换不需要再重复请求...客户端关闭连接如下: ws.close() 然后发送关闭帧给对方,通常会带有关闭连接状态码,常见的状态码如下: 1000 连接正常关闭 1001 端点离线,例如服务器down,或者浏览器已经离开此页面...1002 端点因为协议错误而中断连接 1003 端点因为受到不能接受的数据类型而中断连接 1004 保留 1005 保留, 用于提示应用未收到连接关闭的状态码 1006 端点异常关闭 1007 端点收到的数据帧类型不一致而导致连接关闭...sock.on('end',()=>{ console.log("连接断开") }) }) serve.listen("8888") 使用命令 node serve.js 或node serve...启动服务之后,访问前边创建的html文件访问websocket服务。 四、websocket的优点 第一次通过http建立连接之后,数据交互不用发送http请求,节省了带宽资源。

1.1K20

云数据库MySql故障切换下的应用重连配置最佳实践

数据库连接池是一种管理和维护数据库连接的技术,它通过预先创建一组数据库连接并将它们保存在一个连接池中,以便在需要时重复使用这些连接,而不是每次都创建新的连接。...通过源码分析,HikariCP基于心跳检测、连接超时、连接验证、异常处理、回收策略等机制尽量保持一定数量的可用连接,以满足应用程序的需求,同时避免过多的空闲连接占用资源。...可接受的最低连接超时为 250 毫秒。idleTimeout600000(10min)此属性控制允许连接在池中保持空闲状态的最长时间。...值为0表示永远不会从池中删除空闲连接。最小允许值为10000ms(10秒)。keepaliveTime0(禁用)此属性控制 HikariCP 尝试保持连接活动的频率,以防止数据库或网络基础设施超时。...● 设置连接的最长生命周期:使用DB.SetConnMaxLifetime 设置连接在关闭之前可以保持打开状态的最长时间。默认情况下,连接可以使用并重复使用任意长的时间,但须遵守上述限制。

16610

语音评测之——websocket

连接:http1.1之后默认建立长连接,由客户端发出请求,服务端接收请求,双方建立连接,在服务端没有返回之前保持连接,当客户端在发送请求时,它会使用同一个连接。...这一直继续到客户端或者服务端认为会话已经结束,其中一方中断连接,更适用于追求实时性高的场景比如数据库的连接等等。...而我们的评测过程中客户端会实时发送自己的状态信息给服务端,而服务端也会主要发送信息给客户端告知自己当前的状态,而这种真的全双工的协议便是websocket协议。...uid].send(message) # 给客户端推送信息 except WebSocketError: print u'用户已断开连接...' # 如果有客户端断开,则删除这个断开websocket users.pop(id) if __name__ == '__main__': server = WSGIServer

3.3K10
领券