@@ -14,11 +14,19 @@ app.get('/', function(req, res) {
1414 } ) ;
1515} ) ;
1616
17- // socket
1817/*
18+ * socket.io
19+ * @REF - https://github.com/socketio/socket.io
20+ *
1921 * io - 소켓 서버
20- * socket - 클라이언트와 연결된 소켓
21- * io.sockets.in(roomId) - 타겟 룸에 전체 메시지 전달.
22+ * socket - 클라이언트와 연결된 하나의 소켓
23+ * io.sockets.in(roomId).emit() - 타겟 룸 소켓들 전체에 메시지 전달
24+ * io.sockets.manager.rooms - 현재 생성되어 있는 모든 room 목록을 리턴
25+ *
26+ * [Send methods]
27+ * io.emit('message', data); // 자신 포함 전체룸 유저들에게 전송
28+ * io.sockets.in(roomId).emit('message', data); // 자신 포함 해당룸에 유저들에게 전송
29+ * socket.broadcast.emit('message', data); // 자신 제외 메시지 전송
2230 */
2331var socketIds = [ ] ;
2432io . on ( 'connection' , function ( socket ) {
@@ -27,7 +35,7 @@ io.on('connection', function(socket) {
2735 // 룸접속
2836 socket . on ( 'joinRoom' , function ( roomNum , nickName ) {
2937 roomId = roomNum ;
30- socket . join ( roomId ) ;
38+ socket . join ( roomId ) ; // 소켓을 특정 room에 binding합니다.
3139
3240 // 유저 목록
3341 socketIds [ nickName ] = socket . id ;
@@ -39,8 +47,6 @@ io.on('connection', function(socket) {
3947 socket . on ( 'leaveRoom' , function ( roomNum , nickName ) {
4048 socket . leave ( roomNum ) ;
4149 delete socketIds [ nickName ] ;
42-
43- console . log ( 'leaveRoom' , roomNum , Object . keys ( socketIds ) ) ;
4450 socket . broadcast . to ( roomNum ) . emit ( 'leaveRoom' , nickName , Object . keys ( socketIds ) ) ;
4551 } ) ;
4652
@@ -51,15 +57,13 @@ io.on('connection', function(socket) {
5157 if ( data . to == 'all' ) {
5258 socket . broadcast . to ( roomId ) . emit ( 'message' , data ) ; // 자신 제외 룸안의 유저
5359 } else {
54- var targetSocket = socketIds [ data . to ] ;
55-
56- if ( targetSocket ) {
57- io . sockets . in ( targetSocket ) . emit ( 'message' , data ) ;
60+ // 귓속말
61+ var targetSocketId = socketIds [ data . to ] ;
62+ if ( targetSocketId ) {
63+ //io.to(targetSocketId).emit('message', data);
64+ io . sockets . connected [ targetSocketId ] . emit ( 'message' , data ) ;
5865 }
5966 }
60- //socket.broadcast.emit('message', data); // 자신 제외 메시지 전송
61- //io.emit('message', data); // 자신 포함 전체 룸 메시지 전송
62- //io.sockets.in(roomId).emit('message', data); // 자신 포함 룸안의 유저
6367 } ) ;
6468
6569 // 타이핑
0 commit comments