Long polling
, Ajax
등을 사용해도 어느정도 해결이 가능하긴 하다.ws
, wss
(http
, https
와 같은 개념)대표적인 라이브러리
- Python: websocket
- JS: ws, websocket, socket.io
- Go: gorilla/websocket
npm i socket.io
// index.js
const express = require('express');
const app = express();
const server = require('http').createServer(app); // http 서버 생성
const io = require('socket.io')(server); // http 서버를 socket.io 서버로 upgrade
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
server.listen(3000, () => {
console.log('listening on *:3000');
});
socket
객체가 전달된다.io.on('connection', (socket) => {
console.log('a user connected');
});
socket
: 개발 클라이언트와 상호작용을 위한 객체io
: 서버에 연결된 전체 클라이언트와 상호작용을 위한 객체
socket.on('envetName', callback() { ... });
io.emit('eventName', msg);
socket.emit('eventName', msg);
socket.broadcast.emit('eventName', msg);
io.to(id).emit('eventName', msg);
// index.html
<!DOCTYPE html>
<html>
<head>
<title>Socket.IO chat</title>
</head>
<body>
<ul id="messages"></ul>
<form id="form" action="">
<input id="input" autocomplete="off" /><button>Send</button>
</form>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
</script>
</body>
</html>
var socket = io();
socekt.emit('envetName', msg);
socket.on("event_name", function(data) {
console.log('Message from Server: ' + data);
});
Socket.IO
10.5 Node.js(Express)와 Socket.io
Socket.io를 사용한 실시간 채팅 애플리케이션
[웹소켓] WebSocket의 개념 및 사용이유, 작동원리, 문제점