2016-12-10 22 views
4

サーバー全体を閉じることなくサーバーからWebSocket接続を終了することはできますか?それでは、どうしたらいいですか?WebSocket接続を終了するにはどうすればいいですか?

注:NodeJSをバックエンドと 'ws' websocketモジュールとして使用しています。

+0

ようこそws.closeを使用します!最初に[ツアー](http://stackoverflow.com/tour)にアクセスし、[よくある質問をする方法](http://stackoverflow.com/help/how-to-ask)を学んで[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例を参照してください。私たちがあなたを助けてくれるのは簡単です。 –

+0

ブラウザの更新が問題を解決しませんか? – Lazyexpert

答えて

5

あなたはこれを行うことができ、サーバを閉じずに、すべてのクライアントをキックしたい場合:

for(const client of wss.clients) 
{ 
    client.close(); 
} 

あなたがしたい場合は、あまりにもwss.clientsをフィルタリングすることができ、それがあるべきws

特に1つを探します。

let WebSocketServer = require("ws").Server; 
let wss = new WebSocketServer ({ port: 8080 }); 

wss.on('connection', function connection(ws) { 
    ws.send('something'); 
    ws.close(); // <- this closes the connection from the server 
}); 

と基本的なクライアント

"use strict"; 
const WebSocket = require("ws"); 
let ws = new WebSocket("ws://localhost:8080"); 
ws.onopen =() => { 
    console.log("opened"); 
}; 
ws.onmessage = (m) => { 
    console.log(m.data); 
}; 
ws.onclose =() => { 
    console.log("closed"); 
}; 

であなたが得られます:あなたは(すなわち、それはなど不正なデータを送信します)接続ロジックの一部としてクライアントをキックしたい場合は、これを行うことができます:

d:/example/node client 
opened 
something 
closed 
0

var client = net.createConnection()を使用してソケットを作成する場合は、client.destroy()を使用してソケットを破棄できます。

var server = new WebSocketServer(); 
server.on('connection', function (socket) { 
    // Do something and then 
    socket.close(); //quit this connection 
}); 
1

ws documentationによると、あなたは接続を終了するwebsocket.close()を呼び出す必要があります。

let server = new WebSocketServer(options); 
server.on('connection', ws => { 
    ws.close(); //terminate this connection 
}); 
0

強行は、スタックオーバーフローに、このように()

var socketServer = new WebSocketServer(); 
 
socketServer.on('connection', function (ws) { 
 
    ws.close(); //Close connecton for connected client ws 
 
});

関連する問題