mirror of
https://github.com/sergeyyarkov/react-chat-app.git
synced 2026-10-11 10:29:04 +03:00
37 lines
951 B
JavaScript
37 lines
951 B
JavaScript
const server = require('express')()
|
|
const http = require('http').createServer(server)
|
|
const io = require('socket.io')(http)
|
|
|
|
const PORT = process.env.PORT || 3001
|
|
|
|
|
|
server.get('/', (req, res) => {
|
|
res.send('React Chat API')
|
|
})
|
|
|
|
const users = []
|
|
|
|
io.on('connection', (socket) => {
|
|
|
|
socket.on('user:connected', ({ username }) => {
|
|
users.push({ username, socketId: socket.id })
|
|
io.emit('user:connected', { username, online: users.length })
|
|
})
|
|
|
|
socket.on('chat:message', ({ message, username, date }) => {
|
|
io.emit('chat:message', { message, username, date })
|
|
})
|
|
|
|
socket.on('disconnecting', () => {
|
|
const userIndex = users.findIndex((user) => socket.id === user.socketId)
|
|
|
|
if (userIndex !== -1) {
|
|
io.emit('user:disConnected', { username: users[userIndex].username, online: users.length - 1 })
|
|
users.splice(userIndex, 1)
|
|
}
|
|
})
|
|
})
|
|
|
|
http.listen(PORT, () => {
|
|
console.log(`Server running on port: ${PORT}`)
|
|
}) |