Для настройки Socket.IO совместно с Express для вывода сообщений о подключении и отключении клиентов, можно использовать следующий код:
```javascript
const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
const app = express();
const server = http.createServer(app);
const io = socketIo(server);
io.on('connection', (socket) => {
console.log('Client connected');
socket.on('disconnect', () => {
console.log('Client disconnected');
});
});
server.listen(3000, () => {
console.log('Server is running on port 3000');
});
```
Чтобы улучшить структуру и ясность кода, можно вынести обработку событий Socket.IO в отдельные модули или функции, чтобы код был более читаемым и поддерживаемым. Например, можно создать отдельный модуль для обработки событий и импортировать его в основной файл:
```javascript
// socketHandlers.js
module.exports = (io) => {
io.on('connection', (socket) => {
console.log('Client connected');
socket.on('disconnect', () => {
console.log('Client disconnected');
});
});
};
```
```javascript
// server.js
const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
const socketHandlers = require('./socketHandlers');
const app = express();
const server = http.createServer(app);
const io = socketIo(server);
socketHandlers(io);
server.listen(3000, () => {
console.log('Server is running on port 3000');
});
```
Такой подход делает структуру приложения более модульной и понятной, а также упрощает добавление новых функциональностей или обработчиков событий.