참고 : 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 |