51 lines
1.1 KiB
JavaScript
51 lines
1.1 KiB
JavaScript
const express = require('express');
|
|
const http = require('http');
|
|
const socketIo = require('socket.io');
|
|
const multer = require('multer');
|
|
const path = require('path');
|
|
|
|
const fs = require('fs');
|
|
const uploadDir = './uploads';
|
|
|
|
if (!fs.existsSync(uploadDir)) {
|
|
fs.mkdirSync(uploadDir);
|
|
}
|
|
|
|
const app = express();
|
|
const server = http.createServer(app);
|
|
const io = socketIo(server);
|
|
|
|
app.use(express.static(path.join(__dirname, 'public')));
|
|
|
|
const storage = multer.diskStorage({
|
|
destination: function (req, file, cb) {
|
|
cb(null, 'uploads/');
|
|
},
|
|
filename: function (req, file, cb) {
|
|
cb(null, file.originalname);
|
|
}
|
|
});
|
|
|
|
const upload = multer({ storage: storage });
|
|
|
|
io.on('connection', (socket) => {
|
|
console.log('A user connected');
|
|
|
|
socket.on('chat message', (msg) => {
|
|
io.emit('chat message', msg);
|
|
});
|
|
|
|
socket.on('disconnect', () => {
|
|
console.log('User disconnected');
|
|
});
|
|
});
|
|
|
|
app.post('/upload', upload.single('file'), (req, res) => {
|
|
io.emit('file', req.file.originalname);
|
|
res.send('File uploaded successfully');
|
|
});
|
|
|
|
server.listen(3000, () => {
|
|
console.log('Server running on http://localhost:3000');
|
|
});
|