转发:点击打开链接
ReconnectingWebSocket
一个小型JavaScript库,用于装饰WebSocket API以提供WebSocket连接,如果连接断开,它将自动重新连接。
它是API兼容的,所以当你有:
var ws = new WebSocket(' ws:// .... ');
你可以用下面的代替:
var ws = new ReconnectingWebSocket(' ws:// .... ');
gzip压缩的缩小库不足600字节。
如何重新连接
使用标准WebSocket
API,您从WebSocket实例收到的事件通常是:
onopen
onmessage
onmessage
onmessage
onclose // At this point the WebSocket instance is dead.
使用a ReconnectingWebSocket
,在一个onclose
事件被调用后,它会自动尝试重新连接。另外,连接会重复尝试(只需一个小暂停),直到成功为止。所以你收到的事件可能看起来更像是:
onopen
onmessage
onmessage
onmessage
onclose
// ReconnectingWebSocket attempts to reconnect
onopen
onmessage
onmessage
onmessage
onclose
// ReconnectingWebSocket attempts to reconnect
onopen
onmessage
onmessage
onmessage
onclose
这一切都由图书馆自动处理。
参数
var socket = new ReconnectingWebSocket(url,protocols,options);
url
protocols
- 每个WebSocket规范的可选字符串或协议数组。
- https://tools.ietf.org/html/rfc6455
options
- 选项(见下文)
选项
选项可以在实例化时作为第三个参数传递,或者在实例化后直接在对象上设置:
var socket = new ReconnectingWebSocket(url,null,{debug : true,reconnectInterval : 3000 });
要么
var socket = new ReconnectingWebSocket(url);
套接字。debug = true ;
套接字。timeoutInterval = 5400 ;
debug
- 这个实例是否应该记录调试消息。调试消息被打印到
console.debug()
。 - 接受
true
或false
- 默认值:
false
automaticOpen
- 实例化时,WebSocket是否应尝试立即连接。可以使用ws.open()和ws.close()随时手动打开或关闭套接字。
- 接受
true
或false
- 默认值:
true
reconnectInterval
- 尝试重新连接之前要延迟的毫秒数。
- 接受
integer
- 默认:
1000
maxReconnectInterval
- 延迟重新连接尝试的最大毫秒数。
- 接受
integer
- 默认:
30000
####reconnectDecay
- 重新连接延迟的增加率。允许重新连接尝试在问题持续时退后。
- 接受
integer
或float
- 默认:
1.5
timeoutInterval
- 在关闭和重试之前等待连接成功的最长时间(以毫秒为单位)。
- 接受
integer
- 默认:
2000
maxReconnectAttempts
- 放弃之前将进行的重新连接尝试的最大次数。如果为空,重新连接尝试将继续进行。
- 接受
integer
或null
。 - 默认:
null
binaryType
- 二进制类型是一些应用程序所必需的。
- 接受字符串
'blob'
或'arraybuffer'
。 - 默认:
'blob'
方法
ws.open()
- 打开重新连接WebSocket
ws.close(code, reason)
- 关闭WebSocket连接或连接尝试(如果有的话)。如果连接已经关闭,这个方法什么也不做。
code
结束代码是可选的(默认值1000)。https://tools.ietf.org/html/rfc6455#section-7.4.1reason
是套接字被关闭的可选原因。https://tools.ietf.org/html/rfc6455#section-7.1.6
ws.refresh()
- 如果仍然打开,请刷新连接(关闭然后重新打开它)。
ws.send(data)
- 通过WebSocket连接将数据传输到服务器。
- 接受@param数据的文本字符串,ArrayBuffer或Blob
喜欢这个?查看websocketd,以获取使用任何编程语言创建WebSocket后端的最简单方法。