Skip to content

Commit f047238

Browse files
author
dodortus
committed
* add direct message
1 parent b897a33 commit f047238

File tree

2 files changed

+27
-27
lines changed

2 files changed

+27
-27
lines changed

contents/js/base.js

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -92,23 +92,19 @@ $(function() {
9292
// 메시지 이벤트
9393
$('form').submit(function() {
9494
var msg = $msgInput.val();
95+
var receiverNickName = null;
9596

9697
if (msg.match('/')) {
97-
var receiverNickName = msg.split(" ")[0].replace('/', '');
98+
receiverNickName = msg.split(" ")[0].replace('/', '');
9899
msg = msg.replace('/' + receiverNickName + ' ', '');
99-
100-
socket.emit('message', {
101-
nickName: nickName,
102-
body: msg,
103-
to: receiverNickName
104-
});
105-
} else {
106-
socket.emit('message', {
107-
nickName: nickName,
108-
body: msg,
109-
to: 'all'
110-
});
111-
}
100+
}
101+
102+
socket.emit('message', {
103+
nickName: nickName,
104+
body: msg,
105+
to: receiverNickName || 'all'
106+
});
107+
112108
$msgInput.val('');
113109
addUserMessage(nickName, msg, true);
114110

server.js

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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
*/
2331
var socketIds = [];
2432
io.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

Comments
 (0)