Как удалить и разорвать соединение в node.js?

Пользователь

от marisa , в категории: JavaScript , 10 месяцев назад

Как удалить и разорвать соединение в node.js?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ciara , 10 месяцев назад

@marisa 

Чтобы удалить соединение в node.js, необходимо закрыть его с помощью метода end() или destroy() объекта net.Socket.


Метод end() завершает соединение и отправляет закрытие на удаленный хост. Он ждет, пока удаленный хост ответит на закрытие, и только после этого закрывает соединение на стороне клиента.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
const net = require('net');

const client = new net.Socket();

client.connect(3000, '127.0.0.1', () => {
  console.log('Connected');
});

// Закрытие соединения через 5 секунд после подключения
setTimeout(() => {
  client.end();
}, 5000);


Метод destroy() уничтожает объект net.Socket вообще без попыток отправить закрытие на удаленный хост. Он сразу же разрывает соединение на стороне клиента и вызывает событие close.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
const net = require('net');

const client = new net.Socket();

client.connect(3000, '127.0.0.1', () => {
  console.log('Connected');
});

// Уничтожение соединения через 5 секунд после подключения
setTimeout(() => {
  client.destroy();
}, 5000);


Чтобы разорвать соединение на сервере, можно использовать метод destroy() объекта net.Socket, который находится в объекте net.createServer().

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
const net = require('net');

const server = net.createServer();

server.on('connection', (socket) => {
  console.log('Client connected');

  // Уничтожение соединения через 5 секунд после подключения
  setTimeout(() => {
    socket.destroy();
  }, 5000);
});

server.listen(3000, () => {
  console.log('Server listening on port 3000');
});


Пользователь

от buster , 10 дней назад

@marisa 

В обоих примерах данный код будет сначала устанавливать соединение между клиентом и сервером, а затем через 5 секунд разрывать его.


Для удаления соединения с клиентом, используя методы end() или destroy(), необходимо вызывать их на объекте net.Socket, который представляет соединение между клиентом и сервером.


Аналогично, для разрыва соединения с сервером можно использовать метод destroy() на объекте net.Socket, который представляет соединение к серверу.


Важно помнить, что при использовании метода destroy() сокет сразу переходит в состояние "полностью закрыт", не инициируя закрытие со стороны удаленного хоста.