Programming/node.js

socket.io 기초

gukbap 2015. 5. 15. 18:21
반응형

참고 : http://bcho.tistory.com/899



io.socket.on('connection', function(socket){


callback 함수가 받은 매개변수인 socket을 아래와 같이 사용할 수 있다.


이벤트를 보내기

socket.emit('이벤트명', {메시지})

현재 연결되어 있는 클라이언트 소켓에 '이벤트명'을 통해 메시지를 전달한다.


socket.broadcast.emit('이벤트명', {메시지});

이벤트를 발생시킨 클라이언트나 서버를 제외한 모든 클라이언트나 서버에 메시지를 전달한다.


io.sockets.emit('이벤트명', function(data){});

socket이 개별 클라이언트 소켓을 대표하는 객체라면, io는 모든 socket을 대표하는 객체이다. 연결된 모든 클라이언트 소켓에 대해서 이벤트를 보낸다.


io.sockets(socket_id).emit('이벤트명', function(data){});

각 클라이언트 소켓은 id라는 속성을 가지고 있는데 이것이 소켓들을 구별하는 식별자가 된다. 소켓 id를 통해서 특정 상대에게 이벤트를 보낼 수 있다.



이벤트 받기

socket.on('이벤트명', function(data){});

현재 연결되어 있는 클라이언트 소켓으로부터 들어오는 '이벤트명' 이벤트에 대해서 callback 함수를 정의한다. 이 때 이벤트 메시지는 callback 함수의 data로 전달된다.



데이터 바인딩

socket.set('key', 'value', function(){});

socket이라는 객체의 key라는 속성에 value 값을 저장하고 이에 대한 callback 함수를 정의한다.


socket.get('key', function(err, value){});

socket 객체에서 key의 값을 callback 함수의 value를 통해서 받는다.


socket.del('key', function(err, value){});

socket 객체의 key와 이에 대응하는 value를 삭제한다.



Room

소켓들을 grouping하는 개념. room을 사용하게 되면 broadcast를 해도 같은 room 안에 있는 클라이언트에게만 이벤트가 전송된다.


socket.join('room_name');

socket을 특정 room에 바인딩 시킨다.


socket.leave('room_name');

socket을 특정 room에서 나오게 한다.


io.sockets.in('room_name').emit('event', message);

room_name 안에 있는 모든 클라이언트들에게 이벤트 보내기


socket.broadcast.to('room_name').emit('event', message)

이벤트를 발생시킨 클라이언트나 서버를 제외한 room_name 안에 있는 모든 클라이언트에게 이벤트 보내기


io.sockets.manager.rooms

현재 생성된 room의 목록을 반환한다.


io.sockets.clients('room_name')

room_name 안에 있는 모든 클라이언트 소켓 목록을 리턴한다.



반응형

'Programming > node.js' 카테고리의 다른 글

io.js  (0) 2015.06.15
Brackets  (0) 2015.05.15
ubuntu에서 node.js update  (0) 2015.05.14
socket.io로 채팅을 해볼까  (0) 2015.05.13
socket.io를 써보자  (0) 2015.05.13