A small JavaScript library that decorates the WebSocket API to provide a WebSocket connection that will automatically reconnect if the connection is dropped.
It is API compatible, so when you have:
var ws = new WebSocket('ws://....');
you can replace with:
var ws = new ReconnectingWebSocket('ws://....');
Minified library with gzip compression is less than 600 bytes.
With the standard WebSocket API, the events you receive from the WebSocket instance are typically:
onopen
onmessage
onmessage
onmessage
onclose // At this point the WebSocket instance is dead.
With a ReconnectingWebSocket, after an onclose event is called it will automatically attempt to reconnect. In addition, a connection is attempted repeatedly (with a small pause) until it succeeds. So the events you receive may look something more like:
onopen
onmessage
onmessage
onmessage
onclose
// ReconnectingWebSocket attempts to reconnect
onopen
onmessage
onmessage
onmessage
onclose
// ReconnectingWebSocket attempts to reconnect
onopen
onmessage
onmessage
onmessage
onclose
This is all handled automatically for you by the library.
var socket = new ReconnectingWebSocket(url, protocols, options);
urlprotocolsoptionsOptions can either be passed as the 3rd parameter upon instantiation or set directly on the object after instantiation:
var socket = new ReconnectingWebSocket(url, null, {debug: true, reconnectInterval: 3000});
or
var socket = new ReconnectingWebSocket(url);
socket.debug = true;
socket.timeoutInterval = 5400;
debugconsole.debug().true or falsefalseautomaticOpentrue or falsetruereconnectIntervalinteger1000maxReconnectIntervalinteger30000reconnectDecayinteger or float1.5timeoutIntervalinteger2000maxReconnectAttemptsinteger or null.nullws.open()ws.close(code, reason)code is optional the closing code (default value 1000). https://tools.ietf.org/html/rfc6455#section-7.4.1reason is the optional reason that the socket is being closed. https://tools.ietf.org/html/rfc6455#section-7.1.6ws.refresh()ws.send(data)Like this? Check out websocketd for the simplest way to create WebSocket backends from any programming language.
$ claude mcp add reconnecting-websocket \
-- python -m otcore.mcp_server <graph>