Showing
3 changed files
with
33 additions
and
37 deletions
| ... | @@ -75,43 +75,47 @@ app.use(router) // router 정의 | ... | @@ -75,43 +75,47 @@ app.use(router) // router 정의 |
| 75 | 75 | ||
| 76 | // Socket.io | 76 | // Socket.io |
| 77 | io.sockets.on('connection', function(socket) { | 77 | io.sockets.on('connection', function(socket) { |
| 78 | - try{ | 78 | + var ip = socket.handshake.address; |
| 79 | - /* 새로운 유저가 접속했을 경우 다른 소켓에게도 알려줌 */ | 79 | + |
| 80 | - socket.on('newUser', function() { | 80 | + /* 새로운 유저가 접속했을 경우 다른 소켓에게도 알려줌 */ |
| 81 | - /* 소켓에 이름 저장해두기 */ | 81 | + socket.on('newUser', function() { |
| 82 | - var tempSession = socket.handshake.sessionStore.sessions; | 82 | + /* 소켓에 이름 저장해두기 */ |
| 83 | - var key = socket.handshake.sessionID; | 83 | + var tempSession = socket.handshake.sessionStore.sessions; |
| 84 | - | 84 | + var key = socket.handshake.sessionID; |
| 85 | - // tempSession[key] = String Type | 85 | + |
| 86 | + // tempSession[key] = String Type | ||
| 87 | + if(tempSession[key] != undefined){ | ||
| 86 | var useSession = JSON.parse(tempSession[key]); | 88 | var useSession = JSON.parse(tempSession[key]); |
| 87 | socket.name = useSession.passport.user.nickname | 89 | socket.name = useSession.passport.user.nickname |
| 88 | - console.log(logString + socket.name+' 님이 접속하였습니다.') | 90 | + console.log(logString + socket.name+' 님이 접속하였습니다.('+ip+')') |
| 89 | 91 | ||
| 90 | /* 모든 소켓에게 전송 */ | 92 | /* 모든 소켓에게 전송 */ |
| 91 | io.sockets.emit('update', {type: 'connect', name: 'SERVER', message:socket.name + '님이 접속하였습니다.'}) | 93 | io.sockets.emit('update', {type: 'connect', name: 'SERVER', message:socket.name + '님이 접속하였습니다.'}) |
| 92 | - }) | 94 | + } |
| 93 | - } | 95 | + }) |
| 94 | - catch{ | 96 | + |
| 95 | - // | ||
| 96 | - } | ||
| 97 | - | ||
| 98 | /* 전송한 메시지 받기 */ | 97 | /* 전송한 메시지 받기 */ |
| 99 | socket.on('message', function(data) { | 98 | socket.on('message', function(data) { |
| 100 | - /* 받은 데이터에 누가 보냈는지 이름을 추가 */ | 99 | + if(socket.name != undefined){ |
| 101 | - data.name = socket.name | 100 | + /* 받은 데이터에 누가 보냈는지 이름을 추가 */ |
| 102 | - | 101 | + data.name = socket.name |
| 103 | - console.log(data) | 102 | + |
| 104 | - | 103 | + /* 보낸 사람을 제외한 나머지 유저에게 메시지 전송 */ |
| 105 | - /* 보낸 사람을 제외한 나머지 유저에게 메시지 전송 */ | 104 | + socket.broadcast.emit('update', data); |
| 106 | - socket.broadcast.emit('update', data); | 105 | + } |
| 106 | + else{ | ||
| 107 | + console.log(logString+'익명 유저의 채팅 전송을 거부했습니다.('+ip+')') | ||
| 108 | + // | ||
| 109 | + } | ||
| 107 | }) | 110 | }) |
| 108 | 111 | ||
| 109 | /* 접속 종료 */ | 112 | /* 접속 종료 */ |
| 110 | socket.on('disconnect', function() { | 113 | socket.on('disconnect', function() { |
| 111 | - console.log(logString+socket.name + ' 님이 나가셨습니다.') | 114 | + if(socket.name != undefined){ |
| 112 | - | 115 | + console.log(logString+socket.name + ' 님이 나가셨습니다.') |
| 113 | - /* 나가는 사람을 제외한 나머지 유저에게 메시지 전송 */ | 116 | + /* 나가는 사람을 제외한 나머지 유저에게 메시지 전송 */ |
| 114 | socket.broadcast.emit('update', {type: 'disconnect', name: 'SERVER', message: socket.name + '님이 나가셨습니다.'}); | 117 | socket.broadcast.emit('update', {type: 'disconnect', name: 'SERVER', message: socket.name + '님이 나가셨습니다.'}); |
| 118 | + } | ||
| 115 | }) | 119 | }) |
| 116 | }) | 120 | }) |
| 117 | 121 | ... | ... |
| ... | @@ -61,15 +61,15 @@ create table board( | ... | @@ -61,15 +61,15 @@ create table board( |
| 61 | >UPDATE board SET idx = @COUNT:=@COUNT+1; | 61 | >UPDATE board SET idx = @COUNT:=@COUNT+1; |
| 62 | 62 | ||
| 63 | --- | 63 | --- |
| 64 | -### 최종 수정: 2021-11-25 17:57<br> | 64 | +### 최종 수정: 2021-11-25 18:48<br> |
| 65 | ### 수정 내용: | 65 | ### 수정 내용: |
| 66 | 0. 사용자-서버 채팅간 여백 | 66 | 0. 사용자-서버 채팅간 여백 |
| 67 | 0. 채팅 엔터키 | 67 | 0. 채팅 엔터키 |
| 68 | -0. 채팅(socket) 사용 중 서버 재시작 시 서버 오류 | ||
| 69 | 1. 채팅 구현 | 68 | 1. 채팅 구현 |
| 70 | 2. 시간 실시간 반영 | 69 | 2. 시간 실시간 반영 |
| 71 | 3. 프로필 사진 추가 | 70 | 3. 프로필 사진 추가 |
| 72 | 4. 프로필 검색 추가 | 71 | 4. 프로필 검색 추가 |
| 73 | 5. 프로필 비주얼 업데이트 | 72 | 5. 프로필 비주얼 업데이트 |
| 74 | -6. 코드 다듬음 | ||
| 75 | -7. 버그 수정 | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 73 | +6. 채팅(socket) 사용 중 서버 재시작 시 서버 오류 해결 | ||
| 74 | +7. 코드 다듬음 | ||
| 75 | +8. 버그 수정 | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -263,7 +263,6 @@ router.post('/upload', upload.single('userfile'), function(req,res){ | ... | @@ -263,7 +263,6 @@ router.post('/upload', upload.single('userfile'), function(req,res){ |
| 263 | } | 263 | } |
| 264 | }) | 264 | }) |
| 265 | 265 | ||
| 266 | - | ||
| 267 | function popup(){ | 266 | function popup(){ |
| 268 | var url = "/profile/upload"; | 267 | var url = "/profile/upload"; |
| 269 | var name = "파일 업로드"; | 268 | var name = "파일 업로드"; |
| ... | @@ -278,11 +277,4 @@ function enterkey() { | ... | @@ -278,11 +277,4 @@ function enterkey() { |
| 278 | } | 277 | } |
| 279 | } | 278 | } |
| 280 | 279 | ||
| 281 | -function enterkey() { | ||
| 282 | - if (window.event.keyCode == 13) { | ||
| 283 | - // 엔터키가 눌렸을 때 실행할 내용 | ||
| 284 | - send(); | ||
| 285 | - } | ||
| 286 | -} | ||
| 287 | - | ||
| 288 | module.exports = router; | 280 | module.exports = router; |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment