init
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
const express = require('express');
|
||||
const bodyParser = require('body-parser');
|
||||
const cors = require('cors');
|
||||
const http = require('http');
|
||||
const socketIo = require('socket.io');
|
||||
|
||||
const adminRoutes = require('./routes/adminRoutes');
|
||||
const authRoutes = require('./routes/authRoutes');
|
||||
const eventRoutes = require('./routes/eventRoutes');
|
||||
const clubRoutes = require('./routes/clubRoutes');
|
||||
const userRoutes = require('./routes/userRoutes');
|
||||
const notificationRoutes = require('./routes/notificationRoutes');
|
||||
const menuRoutes = require('./routes/menuRoutes');
|
||||
const subscriptionRoutes = require('./routes/subscriptionRoutes');
|
||||
const featureRoutes = require('./routes/featureRoutes');
|
||||
const { sequelize, syncModels } = require('./models');
|
||||
|
||||
const app = express();
|
||||
const server = http.createServer(app);
|
||||
const io = socketIo(server, {
|
||||
cors: {
|
||||
origin: '*',
|
||||
methods: ['GET', 'POST']
|
||||
}
|
||||
});
|
||||
|
||||
app.use(cors());
|
||||
app.use(bodyParser.json());
|
||||
|
||||
// Socket.IO 연결 처리
|
||||
io.on('connection', (socket) => {
|
||||
console.log('새로운 클라이언트 연결:', socket.id);
|
||||
|
||||
// 사용자 인증 및 알림 룸 참여
|
||||
socket.on('authenticate', (userData) => {
|
||||
if (userData && userData.id) {
|
||||
socket.join(`user:${userData.id}`);
|
||||
console.log(`사용자 ${userData.id}가 알림 룸에 참여했습니다.`);
|
||||
}
|
||||
});
|
||||
|
||||
// 연결 해제 처리
|
||||
socket.on('disconnect', () => {
|
||||
console.log('클라이언트 연결 해제:', socket.id);
|
||||
});
|
||||
});
|
||||
|
||||
// 전역 Socket.IO 인스턴스 설정
|
||||
app.set('io', io);
|
||||
|
||||
// 데이터베이스 연결 및 모델 동기화 실행
|
||||
sequelize.authenticate()
|
||||
.then(() => {
|
||||
console.log('데이터베이스에 연결되었습니다.');
|
||||
return syncModels();
|
||||
})
|
||||
.then(() => {
|
||||
console.log('데이터베이스 모델이 동기화되었습니다.');
|
||||
})
|
||||
.catch(err => {
|
||||
console.error('데이터베이스 연결 또는 모델 동기화 오류:', err);
|
||||
});
|
||||
|
||||
// Routes 설정
|
||||
app.use('/api/auth', authRoutes);
|
||||
app.use('/api/admin', adminRoutes);
|
||||
app.use('/api/club', clubRoutes);
|
||||
app.use('/api/club/events', eventRoutes);
|
||||
app.use('/api/features', featureRoutes);
|
||||
app.use('/api/subscriptions', subscriptionRoutes);
|
||||
app.use('/api/users', userRoutes);
|
||||
app.use('/api/notifications', notificationRoutes);
|
||||
app.use('/api/menus', menuRoutes);
|
||||
|
||||
// 루트 경로 핸들러
|
||||
app.get('/', (req, res) => {
|
||||
res.json({ message: '볼링 클럽 매니저 API 서버에 오신 것을 환영합니다!' });
|
||||
});
|
||||
|
||||
// 서버 시작
|
||||
const PORT = process.env.PORT || 3030;
|
||||
server.listen(PORT, () => {
|
||||
console.log(`서버가 포트 ${PORT}에서 실행 중입니다.`);
|
||||
});
|
||||
|
||||
module.exports = app;
|
||||
Reference in New Issue
Block a user