Сервер просто прослушивает входящие соединения, отправляет эхо-сообщение и немедленно закрывает сокет. Несмотря на то, что данные не обрабатываются, использование памяти продолжает расти, пока ОС Android не завершит процесс и приложение не закроется без сбоев и журналов.
Вот минимальный код, который я использую:< /p>
Код: Выделить всё
import React, { useEffect } from 'react';
import { View, Text } from 'react-native';
import TcpSocket from 'react-native-tcp-socket';
const TcpServer = () => {
useEffect(() => {
const server = TcpSocket.createServer(function (socket) {
console.log('Client connected:', socket.address());
socket.on('data', () => {
console.log('Received data, but ignoring it.');
socket.write('Echo server: I got your data');
socket.end(); // Close connection immediately
});
socket.on('error', (error) => {
console.log('An error occurred with client socket:', error);
socket.destroy();
});
socket.on('close', () => {
console.log('Closed connection with', socket.address());
});
});
server.listen({ port: 3000, host: '0.0.0.0', reuseAddress: true }, () => {
console.log('Server is listening on port 3000');
});
return () => {
server.close(() => {
console.log('Server has been closed');
});
};
}, []);
return (
TCP Server is running...
);
};
export default TcpServer;
- Управление памятью: я вызываю сокет .end() для закрытия соединений сразу после ответа.
- Обработка сокетов: я добавил правильную обработку ошибок и логику закрытия соединения, но использование памяти продолжает расти.
- Среда устройства: я тестировал это происходит как на эмуляторе, так и на физических устройствах, но проблема сохраняется.
- Использование памяти должно оставаться стабильным, даже если сервер принимает и закрывает соединения.
- Увеличивается использование памяти на неопределенный срок, даже если сервер ничего не делает с полученными данными и сразу закрывает соединение.
Подробнее здесь: https://stackoverflow.com/questions/792 ... mple-tcp-s
Мобильная версия