Showing
3 changed files
with
36 additions
and
33 deletions
| ... | @@ -24,7 +24,7 @@ var LocalStrategy = require('passport-local').Strategy | ... | @@ -24,7 +24,7 @@ var LocalStrategy = require('passport-local').Strategy |
| 24 | var session = require('express-session') | 24 | var session = require('express-session') |
| 25 | var flash = require('connect-flash') | 25 | var flash = require('connect-flash') |
| 26 | var path = require('path') | 26 | var path = require('path') |
| 27 | -const PORT = 3003 | 27 | +const PORT = 3000 |
| 28 | 28 | ||
| 29 | var jsdom = require('jsdom'); | 29 | var jsdom = require('jsdom'); |
| 30 | const { JSDOM } = jsdom; | 30 | const { JSDOM } = jsdom; |
| ... | @@ -74,6 +74,7 @@ var session = session({ | ... | @@ -74,6 +74,7 @@ var session = session({ |
| 74 | app.use(session); | 74 | app.use(session); |
| 75 | 75 | ||
| 76 | var sharedsession = require("express-socket.io-session"); | 76 | var sharedsession = require("express-socket.io-session"); |
| 77 | +const { createSocket } = require('dgram') | ||
| 77 | io.use(sharedsession(session, { autoSave:true})); | 78 | io.use(sharedsession(session, { autoSave:true})); |
| 78 | 79 | ||
| 79 | app.use(passport.initialize()) | 80 | app.use(passport.initialize()) |
| ... | @@ -113,16 +114,16 @@ io.sockets.on('connection', function(socket) { | ... | @@ -113,16 +114,16 @@ io.sockets.on('connection', function(socket) { |
| 113 | } | 114 | } |
| 114 | else{ | 115 | else{ |
| 115 | console.log(logString+'익명 유저의 채팅 전송을 거부했습니다.('+ip+')') | 116 | console.log(logString+'익명 유저의 채팅 전송을 거부했습니다.('+ip+')') |
| 116 | - // | 117 | + // |
| 117 | } | 118 | } |
| 118 | }) | 119 | }) |
| 119 | - | 120 | + |
| 120 | /* 접속 종료 */ | 121 | /* 접속 종료 */ |
| 121 | socket.on('disconnect', function() { | 122 | socket.on('disconnect', function() { |
| 122 | if(socket.name != undefined){ | 123 | if(socket.name != undefined){ |
| 123 | console.log(logString+socket.name + ' 님이 나가셨습니다.') | 124 | console.log(logString+socket.name + ' 님이 나가셨습니다.') |
| 124 | /* 나가는 사람을 제외한 나머지 유저에게 메시지 전송 */ | 125 | /* 나가는 사람을 제외한 나머지 유저에게 메시지 전송 */ |
| 125 | - socket.broadcast.emit('update', {type: 'disconnect', name: 'SERVER', message: socket.name + '님이 나가셨습니다.'}); | 126 | + socket.broadcast.emit('update', {type: 'disconnect', name: 'SERVER', message: socket.name + '님이 나가셨습니다.'}); |
| 126 | } | 127 | } |
| 127 | }) | 128 | }) |
| 128 | }) | 129 | }) | ... | ... |
| ... | @@ -10,41 +10,42 @@ socket.on('connect', function() { | ... | @@ -10,41 +10,42 @@ socket.on('connect', function() { |
| 10 | 10 | ||
| 11 | /* 서버로부터 데이터 받은 경우 */ | 11 | /* 서버로부터 데이터 받은 경우 */ |
| 12 | socket.on('update', function(data) { | 12 | socket.on('update', function(data) { |
| 13 | - var chat = document.getElementById('chat') | 13 | + var chat = document.getElementById('chat') |
| 14 | 14 | ||
| 15 | - var message = document.createElement('div') | 15 | + var message = document.createElement('div') |
| 16 | - var node; | 16 | + var node; |
| 17 | - if(data.name != "SERVER"){ | 17 | + if(data.name != "SERVER"){ |
| 18 | - node = document.createTextNode(`${data.name}: ${data.message}`) | 18 | + node = document.createTextNode(`${data.name}: ${data.message}`) |
| 19 | - } else{ | 19 | + } |
| 20 | - node = document.createTextNode(`${data.message}`) | 20 | + else{ |
| 21 | - } | 21 | + node = document.createTextNode(`${data.message}`) |
| 22 | - var className = '' | 22 | + } |
| 23 | + var className = '' | ||
| 23 | 24 | ||
| 24 | - // 타입에 따라 적용할 클래스를 다르게 지정 | 25 | + // 타입에 따라 적용할 클래스를 다르게 지정 |
| 25 | - switch(data.type) { | 26 | + switch(data.type) { |
| 26 | - case 'message': | 27 | + case 'message': |
| 27 | - className = 'other' | 28 | + className = 'other' |
| 28 | - break | 29 | + break |
| 29 | 30 | ||
| 30 | - case 'connect': | 31 | + case 'connect': |
| 31 | - className = 'connect' | 32 | + className = 'connect' |
| 32 | - break | 33 | + break |
| 33 | 34 | ||
| 34 | - case 'disconnect': | 35 | + case 'disconnect': |
| 35 | - className = 'disconnect' | 36 | + className = 'disconnect' |
| 36 | - break | 37 | + break |
| 37 | - } | 38 | + } |
| 38 | 39 | ||
| 39 | - message.classList.add(className) | 40 | + message.classList.add(className) |
| 40 | - message.appendChild(node) | 41 | + message.appendChild(node) |
| 41 | - chat.appendChild(message) | 42 | + chat.appendChild(message) |
| 42 | 43 | ||
| 43 | - function a(chat = 'chat'){ | 44 | + function a(chat = 'chat'){ |
| 44 | - var element = document.getElementById(chat); | 45 | + var element = document.getElementById(chat); |
| 45 | - element.scrollTop = element.scrollHeight - element.clientHeight; | 46 | + element.scrollTop = element.scrollHeight - element.clientHeight; |
| 46 | - } | 47 | + } |
| 47 | - a(); | 48 | + a(); |
| 48 | }) | 49 | }) |
| 49 | 50 | ||
| 50 | /* 메시지 전송 함수 */ | 51 | /* 메시지 전송 함수 */ | ... | ... |
| ... | @@ -63,6 +63,7 @@ create table board( | ... | @@ -63,6 +63,7 @@ create table board( |
| 63 | --- | 63 | --- |
| 64 | ### 최종 수정: 2021-11-25 20:24<br> | 64 | ### 최종 수정: 2021-11-25 20:24<br> |
| 65 | ### 수정 내용: | 65 | ### 수정 내용: |
| 66 | +0. 채팅 중 서버 재시작시 기존 참여자들 리셋시키기 이슈 | ||
| 66 | 1. 채팅 구현 | 67 | 1. 채팅 구현 |
| 67 | 2. 시간 실시간 반영 | 68 | 2. 시간 실시간 반영 |
| 68 | 3. 프로필 사진 추가 | 69 | 3. 프로필 사진 추가 | ... | ... |
-
Please register or login to post a comment