时间: 2019-10-16阅读: 978标签: websocket1、断开原因
WebSocket 对web应用来将是一个事件驱动,全双工异步通信通道(WebSocket is an event-driven, full-duplex asynchronous communications channel for your web applications)
WebSocket断开的原因有很多,最好在WebSocket断开时,将错误打印出来。
websocket特点:
ws.onclose = function (e) { console.log('websocket 断开: ' + e.code + ' ' + e.reason + ' ' + e.wasClean) console.log(e)}
- 在TLS(Transport Layer Security 或 SSL)协议上进行操作
- 能够实时的更新,减少客户端和服务端(更多)资源需求
- 使用HTTP作为初始化传输机制,客户端接受到响应之后,通信不会中断,因此能够拜托传统的HTTP request/response 模式的约束
- 只要连接(connection)保持打开,客户端和服务端就能够自由异步的发送信息,而不用使用轮询(polling)
错误状态码:
学习目标:
WebSocket断开时,会触发CloseEvent, CloseEvent会在连接关闭时发送给使用 WebSockets 的客户端. 它在 WebSocket 对象的 onclose 事件监听器中使用。CloseEvent的code字段表示了WebSocket断开的原因。可以从该字段中分析断开的原因。
- 了解Websocket API
- Websocket 协议: 信息传递工具
- web 应用中如何使用
CloseEvent有三个字段需要注意, 通过分析这三个字段,一般就可以找到断开原因
API
CloseEvent.code: code是错误码,是整数类型CloseEvent.reason: reason是断开原因,是字符串CloseEvent.wasClean: wasClean表示是否正常断开,是布尔值。一般异常断开时,该值为false
初始化
WebSocket 的构造器有2个参数:
URL
: 用作连接到服务器,如果不指定端口,则会通过默认端口80(HTTP 端口)或者端口443(HTTPS 端口)连接protocol
(可选参数): 可以是数组或者一个字符串,不传入则默认为空字符串,用来指定子协议(subprotocols)。头文件作为 Sec-WebSocket-Protocol,一个server能够实现多个WebSocket子协议
WebSocket的一些协议:
- Registered protocols: 在WebSocket RFC6455的规范中,第11.5节定义了子协议名称由IANA维护注册的注册管理机构。
- Opened protocols: 可以使用开发的未注册的协议,比如XMPP(Extensible Messaging and Presence Protocol) 或者 STOMP(Simple Text Oriented Message Protocol 面向简单文字信息协议)
- Custom protocols: 可以自由设计协议,只要客户端和服务端都支持,推荐使用包含子协议发起方(originator)的域名的ASCII版本的名称,比如:chat.acme.com
使用本地server,而不使用web server代理连接的话,可以通过下列方式来实例化一个WebSocket对象
# 此处URL为: 'ws://localhost:8181'
# 如果使用TLS传输协议,URL中的'ws://' 可以用 'wss://'替换
var ws = new WebSocket('ws://localhost:8181');
本文由10bet发布于Web前端,转载请注明出处:WebSocket断开原因、心跳机制防止自动断开连接
关键词: