Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- html
- database
- ์นํ์ด์ง๋ง๋ค๊ธฐ
- ๋ฐ์ํ
- css
- ์ํ
- ๊น๋ฏธ๊ฒฝ์๋งํ์์
- K๋ฐฐํฐ๋ฆฌ
- ์ฝ๋ฉ
- Java
- ๋ฆฌ์กํธ
- ์นํผ๋ธ๋ฆฌ์ฑ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์๋ฐ์คํฌ๋ฆฝํธ
- ComputerScience
- ๊ฐ๋ฐ
- ์ค๋ธ์
- ์๋ฐ
- ๋ผํ๋ผ์ค์๋ง๋
- JavaScript
- ํ์ด์ฌ
- ํ๋ก๊ทธ๋๋ฐ
- ์ฑ
- K๋ฐฐํฐ๋ฆฌ๋ ๋ณผ๋ฃจ์
- ์ค๋ผํด
- ๋ ์
- ๋ง์ผ๋ด๊ฐ์ธ์์๋ค์์ฐ๋ค๋ฉด
- Python
- ์ปดํจํฐ๊ณผํ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
Archives
- Today
- Total
JiYoung Dev ๐ฅ
[Node.js] Socket ํต์ (2023.07.10) ๋ณธ๋ฌธ
http ํต์
ํต์ ์์ : ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ๋ค์ด์์ผ ์๋ฒ์ชฝ์์ ๊ทธ์ ์๋ง๋ ์๋ต์ ์งํํ๋ ๋ฐฉ์
์๋ฒ๊ฐ ๋จผ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๊ฒ ๋ถ๊ฐ๋ฅํจ
socket ํต์
์๋ฒ์ ํด๋ผ์ด์ธํธ ์๋ฐฉํฅ ์ฐ๊ฒฐ์ด ์ด๋ฃจ์ด์ง๋ ํต์ ์ผ๋ก, ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ผ ์ ์๊ณ ์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ก ์์ฒญ์ ๋ณด๋ผ ์ ์๋ ํต์
์๋ฅผ๋ค์ด ์ค์๊ฐ ์๋ฆผ
Node.js์์๋ Socket.IO npm ๋ชจ๋์ ์ด์ฉํ์ฌ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์์
๋ชจ๋ ์ค์น
npm install socket.io
์๋ฒ์ชฝ ์์ผ
//์๋ฒ์ชฝ ์์ผ ์์ฑ
const socketIO = require('socket.io')
//์ด๋ ์๋ฒ์ ์ฐ๊ฒฐ์ด ๋ ์ํ๋ก ์ธ ๊ฒ์ธ์ง ์ ์๋ฅผ ํด์ค์ผ ํจ (ex.port)
//express server
module.exports = (server) => {
//express server ์ฐ๊ฒฐ, ํด๋ผ์ด์ธํธ๊ฐ ์ ์ํ ๊ฒฝ๋ก
const io = socketIO(server, {path : '/socket.io'})
//ํด๋ผ์ด์ธํธ๊ฐ ์ ์ํ์ ๋ (connection) -> ํด๋น ํด๋ผ์ด์ธํธ์ ํต์ ํ ์ ์๋ ์์ผ ๊ฐ์ฒด ์์ฑ
io.on('connection', (socket)=>{
//์์ผ์ ํด๋ผ์ด์ธํธ๋ง๋ค ๋ค๋ฅธ -> ์์์ ์ผ๋ก id ๋ฐ๊ธ
console.log('์๋ก์ด ํด๋ผ์ด์ธํธ ์ ์!', socket.id);
//์์ผ ์ฐ๊ฒฐ ํด์
socket.on('disconnect', ()=>{
console.log('ํด๋ผ์ด์ธํธ ์ ์ ํด์ !', socket.id);
})
//์ค๋ฅ ์ฒ๋ฆฌ
socket.on('error', (error)=>{
console.log(error);
})
//ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ๋ฉ์์ง ๋ฐ๊ธฐ
socket.on('reply', (data)=>{
console.log(data); //data : ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ๋ฉ์์ง ์์ฒด
})
//์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฉ์์ง ๋ณด๋ด๊ธฐ
//์๋ฒ์ชฝ์์ ๋จผ์ ์ด๋ฒคํธ ๋ฐ์ (3์ด๋ง๋ค ๋ฉ์์ง ๋ณด๋ด๊ธฐ)
socket.interval = setInterval(()=>{
socket.emit('news', 'Hello Socket.io') //emit : event{key, value(event)} ๋ฐ์
}, 3000)
})
}
ํด๋ผ์ด์ธํธ์ชฝ ์์ผ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
์์ผํต์
<!--์์ผ ์ฐ๊ฒฐ : node.js์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ -> io๋ฅผ ์ฌ์ฉํ ์ ์์ -->
<script src="/socket.io/socket.io.js"></script>
<script>
//ํด๋ผ์ด์ธํธ์ชฝ ์์ผ ๊ฐ์ฒด ์์ฑ
const socket = io.connect('http://localhost:8888', {
path: '/socket.io'
})
//์๋ฒ์ชฝ์์ ๋ฐ์์ํค๋ ์ด๋ฒคํธ ๋ฐ๊ธฐ
socket.on('news', function (data) {
console.log(data);
socket.emit('reply', 'OK')
})
</script>
</body>
</html>
์์ผ - app.js ์ค์
const express = require('express')
const webSocket = require('./socket')
const app = express()
app.set('port', process.env.PORT||8888)
const server = app.listen(app.get('port'), ()=>{
console.log(app.get('port'), '๋ฒ ํฌํธ์์ ์๋ฒ ์ฐ๊ฒฐ ๋๊ธฐ์ค...');
})
webSocket(server)
'full stack > Back-End' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring - Android] JPA ํ์ฉ ์ฐ๋ํ๊ธฐ (2023.07.20~21) (0) | 2023.07.20 |
---|---|
[Node.js] nunjucks (2023.07.12) (0) | 2023.07.12 |
[Node.js] ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ํ๊ธฐ (2023.07.06 ~ 07) (0) | 2023.07.06 |
[Node.js] ์ฟ ํค/์ธ์ (2023.07.06 ~ 07) (0) | 2023.07.06 |
[Node.js] Express ์ฌ์ฉํ๊ธฐ (2023.07.05) (0) | 2023.07.05 |