基本的に、ブラウザーは、同じURL (ws://127.0.0.1:8080/WebSocket-context-root/getResource)への新しい接続を開くと、古い websocket 接続を閉じます。「ws://127.0.0.1:8080/WebSocket-context-root/getResource/」+k のような小さなハックを保持できます。ここで、k は任意の数値またはランダムな文字列です。サーバー側では、パス変数 k を無視します。
このようにして、同時に多くの接続を開くことができます。ドメインごとの最大接続数のブラウザー制限はここでは適用されません (Firefox でテスト済み)。最大 25 の並列接続を試しました。
websocket.readyState を使用して、Web ソケット接続のステータスを確認できます。
onclose Web ソケットのイベントには、接続が閉じられた理由コードがあります。
以下のコードを使用して、アクティブな接続の数をテストします。
var x=0
var intervalID = setInterval(function () {
websocket = new WebSocket("ws://127.0.0.1:8080/WebSocketApi/web/chat/"+x);
websocket.onopen = function (evt) {
console.log('open')
}
websocket.onmessage = function (evt) {
console.log('msg');
}
websocket.onclose= function (evt) {
console.log('closed');
}
if (++x === 15) {
window.clearInterval(intervalID);
}
}, 1);