WebSocket 自動再接続をいい感じに処理する JavaScript 製ライブラリ ReconnectingWebSocket
WebSocket 自動再接続をいい感じに処理する JavaScript 製ライブラリ ReconnectingWebSocket をご紹介します。
まず、背景として WebSocket の自動再接続処理はみんな必ず実装する処理なのに WebSocket では扱ってくれてないので独自実装しないといけません。
そこで「他の人はどうやって実装してるのかな?」と思い、Google 検索したところ joewalnes/reconnecting-websocket: A small decorator for the JavaScript WebSocket API that automatically reconnects というドンピシャなライブラリを見つけたので、早速 WebSocket の自動再接続処理を書き換えてみました。
以下、WebSocket の自動再接続処理をプリミティブな WebSocketと ReconnectingWebSocket でそれぞれ実装した JavaScript サンプルコードをご紹介します。
function connect() {
const ws = new WebSocket('ws://localhost:8080');
ws.onopen = () => {
ws.send(JSON.stringify({
//.... some message the I must send when I connect ....
}));
};
ws.onmessage = (event) => {
console.log('Message:', event.data);
};
ws.onclose = (event) => {
console.log('Socket is closed. 3秒後に再接続します。', event.reason);
setTimeout(() => {
connect();
}, 3000);
};
ws.onerror = (event) => {
console.error(event.message);
ws.close();
};
}
connect();
function connect() {
const ws = new ReconnectingWebSocket(
'ws://localhost:8080',
null,
{
debug: true,
reconnectInterval: 3000
}
);
ws.onopen = () => {
ws.send(JSON.stringify({
//.... some message the I must send when I connect ....
}));
};
ws.onmessage = (event) => {
console.log('Message:', event.data);
};
ws.onclose = (event) => {
console.log('Socket is closed.', event.reason);
};
ws.onerror = (event) => {
console.error(event.message);
};
}
connect();
以上、WebSocket 自動再接続処理を ReconnectingWebSocket でいい感じに実装したい、現場からお送りしました。