메뉴 건너뛰기

컴' 게시판

본문시작

조회 수 20 추천 수 0 댓글 0
퍼블릭/브로드캐스트/프라이빗 전송 개념은 Socket.IO를 사용하면서 익혀야할 중요한 서버-사이드 개념입니다. 퍼블릭(Public)은 발송자를 포함한 모든 클라이언트들에게, 브로드캐스트는 발송자를 제외한 다른 모든 클라이언트들에게, 그리고 프라이빗은 지정된 개인에게 패킷을 전송하는 것을 말합니다. 특히, 프라이빗 전송은 보안을 필요로하는 귓속말과 같은 기능을 구현할 때 아주 요긴하게 사용될 수 있습니다. 만약, 이를 구분하지 않는다면 사실상 모든 사용자들에게 귓속말에 해당하는 패킷을 발송하고 클라이언트-사이드에서 귓속말 대상 사용자 외에 다른 사용자들은 보여주지 않도록 예외처리 작업으로 구현해야겠지요. 겉으로는 완전해 보이겠지만, 이건 눈가리고 아웅입니다. 트래픽 낭비에 보안문제도 안고있죠. 다음 예제는 각기 다른 상황에 대한 응답 형태를 Node.JS 서버에서 구분한 것입니다.

var io = require('socket.io').listen(8080);

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

  // on public
  socket.on('join', function (data) {
    io.sockets.emit('join', socket.id, data);
  });

  // on broadcast
  socket.on('message', function (data) {
    socket.broadcast.emit('message', socket.id, data);
  });

  // on privat
  socket.on('whisper', function (id, data, fn) {
    if (id && io.sockets.sockets[id]) {
      io.sockets.sockets[id].emit('whisper', socket.id, data);
      fn(true);
    } else {
      fn(false);
    }
  });

  socket.on('disconnect', function () {
    socket.broadcast.emit('close', socket.id);
  });

});


위 예제에서 브라이빗 패킷 송/수신 부분을 살펴 보면 클라이언트로 부터 수신할 대상의 id를 받는 부분에 집중해야 합니다. Socket.IO는 자체적으로 sessionId를 발급하고 이것으로 사용자를 구분합니다. 위 예제는 이 sessionId를 클라이언트에서도 동일하게 취급한다고 가정한 것입니다. 그리고 또 한 가지 주의해야 할 점은 발송 대상 추출시 룸(room) 또는 채널(channel) 범주에 구속되어야 한다는 것입니다. io.sockets.sockets 개체에는 모든 클라이언트들에 대한 정보가 들어있기 때문입니다. 물론, 룸이나 채널을 사용하지 않으면 상관 없습니다.



출처 : http://firejune.com/1700/Socket.IO+%ED%95%99%EC%8A%B5+-+%ED%8D%BC%EB%B8%94%EB%A6%AD%252F%EB%B8%8C%EB%A1%9C%EB%93%9C%EC%BA%90%EC%8A%A4%ED%8A%B8%252F%ED%94%84%EB%9D%BC%EC%9D%B4%EB%B9%97+%EA%B5%AC%EB%B6%84


  1. 04
    Mar 2013
    16:04

    Git 간편 안내서

    CategoryIT/개발 By꿈자 Reply0 Views15000 Votes0
    Read More
  2. 03
    Mar 2013
    21:34

    증명사진 뒷배경화면

    Category카메라 By꿈자 Reply0 Views18883 Votes0 file
    Read More
  3. 02
    Feb 2013
    12:06

    마인크래프트

    Category자료실 By꿈자 Reply0 Views10 Votes0 file
    Read More
  4. 31
    Jan 2013
    18:49

    Mac 퓨전드라이브 셋팅

    CategoryIT/개발 By꿈자 Reply0 Views328 Votes0
    Read More
  5. 29
    Jan 2013
    12:20

    RESTful CI 모듈

    CategoryIT/개발 By꿈자 Reply0 Views28 Votes0
    Read More
  6. 29
    Jan 2013
    11:58

    youtube , vimeo 다운받기 ...

    Category자료실 By꿈자 Reply0 Views31 Votes0
    Read More
  7. 22
    Jan 2013
    22:02

    APNS PEM파일 만들기

    CategoryIT/개발 By꿈자 Reply0 Views69 Votes0
    Read More
  8. 04
    Jan 2013
    16:05

    CodeIgniter + MQ, Paralle...

    CategoryIT/개발 By꿈자 Reply0 Views60 Votes0
    Read More
  9. 20
    Nov 2012
    14:52

    Soket.io public / private...

    CategoryIT/개발 By꿈자 Reply0 Views20 Votes0
    Read More
  10. 14
    Nov 2012
    18:07

    [Node.js] 완벽 튜토리얼 정리

    CategoryIT/개발 By꿈자 Reply0 Views17 Votes0
    Read More
Board Pagination Prev 1 ... 13 14 15 16 17 Next
/ 17