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