Socket.io
- νΈνλλ κΈ°μ μλ μ ν ex) websocket, ajax, polling
npm install socket.io
Socket.io μλ² μμ±
var Server = require('socket.io')
var io = new Server(httpServer);
- μΆμ½λ²μ Ό :
var io = require('socket.io')(server)
Event
connection
var express = require('express');
var http = require('http');
var app = express();
var server = http.createServer(app);
server.listen(3000);
app.get('/', function(req, res) {
res.sendFile(__dirname + '/client.html');
});
var io = require('socket.io')(server);
io.on('connect', function(socket) {
console.log('ν΄λΌμ΄μΈνΈ μ μ');
socket.on('disconnect', function() {
console.log('ν΄λΌμ΄μΈνΈ μ μ μ’
λ£');
});
setInterval(function(){
socket.emit('message', 'λ©μΈμ§');
}, 3000);
});
Socket.io Client
<script src="/socket.io/socket.io.js"></script>
var socket = io();
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
socket.on('connect', function() {
console.log('μλ²μ μ°κ²°');
});
</script>
Event
connect
error
disconnect
reconnect
: μλ μ¬μ μ μλ
λ°μ΄ν° κ΅ν
-
socket.emit('Event', data);
: μ μ‘ -
socket.on('Event',function(data))
: μμ -
Server
socket.emit('message', 'λ©μΈμ§');
- Client
socket.on('message', function(msg) {
document.writeln('<li>');
document.writeln(msg);
document.writeln('</li>');
});
BroadcaseEvent
socket.io.emit('BroadcaseEvent',data)
io.emit('BroadcaseEvent',data)
: socket μλ΅ κ°λ₯
Namespace & Room
- κ°μ Namespaceμμλ§ λ©μμ§ μ£Όκ³ λ°μ
- Default-Namespace :
/
Namespace Setting
-
var nsp = io.of('/Custom-Namespace');
: Server -
var nsp = io('/Custom-Namespace');
: Client -
Server
var io = require('socket.io')(server);
var system = io.of('/system');
system.on('connect', function(socket) {
console.log('ν΄λΌμ΄μΈνΈ μ μ');
});
system.emit('message','Notice!');
- Client
var socket = io();
var system = io.of('http://nelp.kr/system');
system.on('connect', function(socket) {
console.log('ν΄λΌμ΄μΈνΈ μ μ');
});
system.on('message', function(data){
alert('System Message' + data);
});
Room
-
Namespace λ΄ μ±λ
-
κ°μ Roomμμλ§ λ°μ΄ν° κ΅ν
-
λ£Έμ μ μ₯(join), μ¬λ¬ λ£Έμ μ μ₯ κ°λ₯
-
λ£Έμμ λ λκΈ°(leave)
-
Server
var room;
socket.on('joinRoom',function(data){
// κΈ°μ‘΄ λ°©μμ λμ€κΈ°
socket.leave(room);
// μλ‘μ΄ μ±ν
λ°© μ
μ₯
room = data.room;
socket.join(room);
});
// μ±ν
λ©μμ§, λ£ΈμΌλ‘(to) μ μ‘
socket.on('chatinput',function(data){
io.to(room).emit('chatMessage',chat);
});
- Client
// λ£Έμ μ
μ₯
socket.emit('joinRoom', {room:room});
// μ±ν
λ©μμ§, λ£ΈμΌλ‘(to) μ μ‘
socket.on('chatMessage',function(data){
var msg = data['msg'];
var nick = data['nick'];
var str = nick + ' : ' + msg;
$('#messages').append($'<li>').text(str);
});