웹 개발 메모장
[자바스크립트] 채팅 구현 코드 (프론트) 본문
채팅 구현 코드(프론트)
웹소켓 통신 부분을 제외한 프론트단의 코드입니다.
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
*{ margin: 0; padding: 0; }
.chat_wrap .header { font-size: 14px; padding: 15px 0; background: #F18C7E; color: white; text-align: center; }
.chat_wrap .chat { padding-bottom: 80px; }
.chat_wrap .chat ul { width: 100%; list-style: none; }
.chat_wrap .chat ul li { width: 100%; }
.chat_wrap .chat ul li.left { text-align: left; }
.chat_wrap .chat ul li.right { text-align: right; }
.chat_wrap .chat ul li > div { font-size: 13px; }
.chat_wrap .chat ul li > div.sender { margin: 10px 20px 0 20px; font-weight: bold; }
.chat_wrap .chat ul li > div.message { display: inline-block; word-break:break-all; margin: 5px 20px; max-width: 75%; border: 1px solid #888; padding: 10px; border-radius: 5px; background-color: #FCFCFC; color: #555; text-align: left; }
.chat_wrap .input-div { position: fixed; bottom: 0; width: 100%; background-color: #FFF; text-align: center; border-top: 1px solid #F18C7E; }
.chat_wrap .input-div > textarea { width: 100%; height: 80px; border: none; padding: 10px; }
.format { display: none; }
|
cs |
HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<div class="chat_wrap">
<div class="header">
CHAT
</div>
<div class="chat">
<ul>
<!-- 동적 생성 -->
</ul>
</div>
<div class="input-div">
<textarea placeholder="Press Enter for send message."></textarea>
</div>
<!-- format -->
<div class="chat format">
<ul>
<li>
<div class="sender">
<span></span>
</div>
<div class="message">
<span></span>
</div>
</li>
</ul>
</div>
</div>
|
cs |
JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
const Chat = (function(){
const myName = "blue";
// init 함수
function init() {
// enter 키 이벤트
$(document).on('keydown', 'div.input-div textarea', function(e){
if(e.keyCode == 13 && !e.shiftKey) {
e.preventDefault();
const message = $(this).val();
// 메시지 전송
sendMessage(message);
// 입력창 clear
clearTextarea();
}
});
}
// 메세지 태그 생성
function createMessageTag(LR_className, senderName, message) {
// 형식 가져오기
let chatLi = $('div.chat.format ul li').clone();
// 값 채우기
chatLi.addClass(LR_className);
chatLi.find('.sender span').text(senderName);
chatLi.find('.message span').text(message);
return chatLi;
}
// 메세지 태그 append
function appendMessageTag(LR_className, senderName, message) {
const chatLi = createMessageTag(LR_className, senderName, message);
$('div.chat:not(.format) ul').append(chatLi);
// 스크롤바 아래 고정
$('div.chat').scrollTop($('div.chat').prop('scrollHeight'));
}
// 메세지 전송
function sendMessage(message) {
// 서버에 전송하는 코드로 후에 대체
const data = {
"senderName" : "blue",
"message" : message
};
// 통신하는 기능이 없으므로 여기서 receive
resive(data);
}
// 메세지 입력박스 내용 지우기
function clearTextarea() {
$('div.input-div textarea').val('');
}
// 메세지 수신
function resive(data) {
const LR = (data.senderName != myName)? "left" : "right";
appendMessageTag("right", data.senderName, data.message);
}
return {
'init': init
};
})();
$(function(){
Chat.init();
});
|
cs |
'옛날.. > 자바스크립트' 카테고리의 다른 글
[자바스크립트] First-Class Function, 함수형 프로그래밍의 최소 조건 (0) | 2019.01.28 |
---|---|
[자바스크립트] 동영상 미리보기 구현하기 (0) | 2018.11.10 |
[자바스크립트] for of가 IE에서 안된다.. (0) | 2018.09.03 |
웹브라우저에서 알림을 받아보자, HTML5 Notification (9) | 2018.08.17 |
[자바스크립트] Date() 기본 사용 방법 (3) | 2018.05.17 |
Comments