2016-12-10 4 views
4

Возможно ли прекратить соединение с сервером без закрытия всего сервера? Если это так, как я могу это достичь?Как закрыть соединение с WebSocket?

Примечание: Я использую NodeJS в качестве back-end и 'ws' websocket module.

+0

Добро пожаловать на переполнение стека! Сначала вы можете взять [тур] (http://stackoverflow.com/tour) и узнать [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) и создать [ Minimal, Complete и Verifiable] (http://stackoverflow.com/help/mcve). Нам будет легче помочь вам. –

+0

Обновление браузера не поможет решить вашу проблему? – Lazyexpert

ответ

5

Если вы хотите пнуть ВСЕХ клиентов, не закрывая сервер вы можете сделать это:

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

вы также можете фильтровать wss.clients тоже, если вы хотите ищите его, в частности. Если вы хотите, чтобы пнуть клиента как часть логики соединения (т.е. он посылает неверные данные и т.д.), вы можете сделать это:

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(), чтобы уничтожить его.

С ws должно быть:

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

Jus использовать ws.close() таким образом

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

Смежные вопросы