마스터욱
Toggle navigation
  • 회원가입 | 정보찾기
ICON NAVIGATION
정보수정 쪽지함 주변맛집 익명채팅
공지사항 채팅 개발문의 방명록
  • MAIN NAVIGATION
  • 메인
  • 마스터욱 공간
    • 마스터욱 소개
    • 개발 리스트
    • 공지사항
    • 방명록
  • 마스터욱 외부자료
    • 네이버
    • 티스토리
    • 깃허브(github)
  • 개인 프로젝트
    • 랜덤 이성 채팅
    • Auto 크롤링
    • Javascript 카카오 채팅
    • 파이썬 뉴스매매
    • C# 키움 주식 자동매매
    • C# 키움 주식 패턴 분석
    • PHP 욱보드
    • 업비트 자동매매 개발
    • 업비트 자동매매 일지
  • 개발 의뢰
    • 개발 문의
    • 개발 견적
    • 개발 피드백
    • FAQ
  • 개발 경험 Tip
    • PHP
    • JSP
    • HTML
    • Javascript
    • Android
    • C#
    • MySQL
    • Linux
    • Python
    • NodeJS
    • React
    • Vue.js
    • Flutter
    • 정규식
    • 기타
  • 커뮤니티
    • 자유게시판
    • 추천사이트
    • 영화
    • 여행
    • 유머
    • Overseas News
  • 맛집&즐길 거리 탐방
    • 맛집 정보
    • 즐길 거리 정보
    • 내 주위 맛집&즐길 거리
  • 공유 사진
    • 음식
    • 여행
    • 캐릭터
    • 배경
    • 기타
    • 이모티콘
    • 일러스트
  • 놀이터
    • 블록뽀시기
    • 트레이딩뷰
    • 로또 시뮬레이션
    • 쳇쳇 익명 채팅
    • 랜덤 이성 채팅
    • AI 채팅
    • 미니 채팅
    • 바이너리 테스트
    • 마번호 생성기
    • 바카라 시뮬레이션
    • 홀짝점수 테스트
    • 로또 분석기
SITE STATISTICS
  • - 명 현재 접속자
  • 2,113 명 오늘 방문자
  • 2,047 명 어제 방문자
  • 5,192 명 최대 방문자
  • 689,733 명 전체 방문자
  • 2,569 개 전체 게시물
  • 496 개 전체 댓글수
Facebook Twitter GooglePlus KakaoStory NaverBand
  1. 홈
  2. 자유게시판
목록으로

채팅을 만들었다.

마스터욱 1 176 0 0 2017-01-08 01:23:45

채팅을 만들었다기보다는 예전에 만들어놓은걸 사이트로 이식했다.

전체채팅으로 만들어서 매우 심플하다.

테이블도 1개 밖에 없다.

심플 미니 채팅이라고 할수 있겠다.

웹소켓을 사용하여 만들수도 있겠지만, 그렇게 하면 소켓서버도 별도로 있어야 하고, 이런 작은 채팅사이즈는 굳이 그렇게 거창하게 만들 필요도 없기 때문에 정말 심플채팅 용으로 만들었다.

 

클라이언트 딴 소스를 공개한다.

만일 테이블 스키마랑 백엔드 소스를 알고 싶다면 별도로 요청해 주신다면 알려드릴게요.

 

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<script type="text/javascript">
    var chating = new function(){
        var msgIng = false;
        var startLoading = true;
        var already_idx = new Array();
        this.send = function(){
            var content = $("#content").val();
            if(content.trim() == "" || msgIng == true){
                return;
            }
 
            $("#content").val("메세지 전송중입니다...");
            $("#content").attr("disabled", true);
            msgIng = true;
 
            $.get("chating_send.php",{content : content},
                function(res){
                    try{
                        if(res.result == true){
                            // 메세지 전송 성공
                            msgIng = false;
                            $("#content").attr("disabled", false);
                            $("#content").val("");
                            $("#content").focus();
                        }
                        else {
                            alert(res.msg);
                        }
                    }catch(e){
                        alert("Error!" + e);
                    }
                },"json"
            );
        }
 
        this.recv = function(){
            $.post("chating_recv.php",{already_idx : already_idx.join(",")},
                function(res){
                    try{
                        if(res.result == true){
                            var data = res.data;
                            var msgUse = false;
                            for ( var i in data ){
                                var content = data[i].content;
                                var msg_key = "msg_" + data[i].idx;
                                if ( document.getElementById(msg_key) == undefined ){
                                    var user = null;
                                    if ( data[i]['sess_id'] == "<?=substr(SESSION_ID, 0, SESSION_ID_SIZE)?>" ){
                                        user = "나의대화";
                                    }
                                    else {
                                        user = data[i]['sess_id'] + " 님의 대화";
                                    }
 
                                    $("#chating_box").append("<div id='" + msg_key + "' style='margin:5px 0px;'><div style='float:left;'>[ "+user+" ] <span style='color:blue;'>" + content + "</span></div><div style='float:right'>"+data[i].reg_date+"</div><div style='clear:both;'></div>");
 
                                    already_idx.push(data[i].idx);
                                    msgUse = true;
                                }
                            }
 
                            if(msgUse == true || startLoading == true){
                                $("#chating_box").scrollTop($("#chating_box")[0].scrollHeight);
                            }
 
                            if(startLoading == true){
                                startLoading = false;
                                $("#chating_box").css("background-image", "");
                            }
 
                            chating.recv_start();
                        }
                        else {
                            alert(res.msg);
                        }
                    }catch(e){
                        alert("Error!" + e);
                    }
                },"json"
            );
        }
 
        this.recv_start = function(){
            setTimeout(this.recv, 1000);
        }
 
        this.get_sess_list = function(){
            $.get("chating_session_list.php",{},
                function(res){
                    try{
                        if(res.result == true){
                            $("#sess_list").html("");
                            var sess_list = res.sess_list;
                            var html = "<h4 style='text-align:center;'>세션 리스트</h4>";
                            for(i in sess_list){
                                if ( sess_list[i] == "<?=substr(SESSION_ID, 0, SESSION_ID_SIZE)?>" ) {
                                    html += "<div>" + sess_list[i] + " [<span style='color:red;'>본인</span>]</div>";
                                }
                                else{
                                    html += "<div>"+sess_list[i]+"</div>";
                                }
                            }
                            $("#sess_list").append(html);
                            console.log("세션갱신ok");
                            chating.get_sess_start();
                        }
                        else {
                            alert(res.msg);
                        }
                    }catch(e){
                        alert("Error!" + e);
                    }
                },"json"
            );
        }
 
        this.get_sess_start = function(){
            setTimeout(this.get_sess_list, 1000 * 60);
        }
    }
 
    $(document).ready(function(){
        chating.recv_start();
        chating.get_sess_list();
        $("#content").focus();
    });
 
</script>
<style type="text/css">
    @media all and (max-width:767px){
        /* 모바일 CSS 작성 */
        #chating_box { height:300px; }
    }
    @media all and (min-width:768px) and (max-width:1024px){
        /* 태블릿 및 노트북 CSS 작성 */
        #chating_box { height:500px; }
    }
     
    @media all and (min-width:1025px){
        /* 데스크탑 CSS 작성 */
        #chating_box { height:500px; }
    }
</style>
 
<div class="row" style="border:1px solid #e1e1e1;">
    <div class="col-md-10" id="chating_box" style="overflow-y:scroll;"></div>
    <div class="col-md-2 hidden-xs hidden-sm hidden-md" id="sess_list"></div>
    <div>
        <div class="col-md-10" style="padding:0px;">
            <input type="text" id="content" placeholder="대화내용을 입력해주세요." class="form-control" onkeypress="if(event.keyCode==13){chating.send();}" />
        </div>
        <div class="col-md-2" style="padding:0px;">
            <input type="button" style="width:100%;" class="btn btn-success" value="전송" onclick="chating.send();" />
        </div>
    </div>
</div>
Colored by Color Scripter
cs

 

 

채팅을 만들었다.
 

0
0

목록

Facebook Twitter GooglePlus KakaoStory NaverBand
1 Comments

비밀번호 확인

확인
댓글은 자신을 나타내는 '얼굴'입니다. *^^*
등록
자동등록방지 숫자를 순서대로 입력하세요.

댓글수정


글쓰기
검색
번호 제목 이름 날짜 조회
  • 235
    음 글을 너무 안쓴거 같은데.....
    마스터욱
    조회수 100   26-08-16 00:53
    마스터욱
    26-08-16 00:53
    100
  • 234
    cursor AI에게 자주 사용하는 명령모음
    마스터욱
    조회수 306   26-03-17 22:41
    마스터욱
    26-03-17 22:41
    306
  • 233
    20살, 숫자만으로 아름다운 나이
    마스터욱
    조회수 320   25-11-15 13:17
    마스터욱
    25-11-15 13:17
    320
  • 232
    [2] 2007년 전역과 그리움 [2]
    마스터욱
    조회수 503   25-11-04 13:37
    마스터욱
    25-11-04 13:37
    503
  • 231
    [1] contabo 서버 결제했습니다. [1]
    마스터욱
    조회수 443   25-09-09 02:54
    마스터욱
    25-09-09 02:54
    443
  • 230
    [2] IOS 그로우스펙 앱 출시 [2]
    마스터욱
    조회수 497   25-09-05 03:04
    마스터욱
    25-09-05 03:04
    497
  • 229
    IOS 그로우스펙 앱 출시임박
    마스터욱
    조회수 372   25-08-05 17:38
    마스터욱
    25-08-05 17:38
    372
  • 228
    IOS 꽁술 앱 출시임박
    마스터욱
    조회수 277   25-06-17 14:14
    마스터욱
    25-06-17 14:14
    277
  • 227
    2005-05-11 인젝션 시도
    마스터욱
    조회수 284   25-05-11 23:28
    마스터욱
    25-05-11 23:28
    284
  • 226
    The Rise of Generative AI: How It\'s Transforming Creative Industries in 2024
    마스터욱
    조회수 290   25-05-06 23:05
    마스터욱
    25-05-06 23:05
    290
  • 225
    How Generative AI is Revolutionizing Content Creation in 2024
    마스터욱
    조회수 216   25-05-06 04:43
    마스터욱
    25-05-06 04:43
    216
  • 224
    해커 침입 흔적
    마스터욱
    조회수 261   25-02-21 11:35
    마스터욱
    25-02-21 11:35
    261
  • 223
    [1] 바이낸스 공지사항 크롤링에서.. X-Cache Miss from cloudfront 이렇게 해서 항상 MISS로 뜨는데.. [1]
    비회원
    조회수 438   25-01-08 17:27
    비회원
    25-01-08 17:27
    438
  • 222
    해커가 또 들어왔습니다.
    마스터욱
    조회수 200   24-12-17 20:19
    마스터욱
    24-12-17 20:19
    200
  • 221
    넷마블 대항해시대 온라인이 서비스를 종료하였다.
    마스터욱
    조회수 185   24-11-29 19:00
    마스터욱
    24-11-29 19:00
    185
  • 220
    [2] 해커가 들어왔다! [2]
    마스터욱
    조회수 267   24-07-16 22:14
    마스터욱
    24-07-16 22:14
    267
  • 219
    해태 팝 봉봉카세트 극장 (추억의 카세트 테이프)
    똘똘이
    조회수 403   24-05-20 12:34
    똘똘이
    24-05-20 12:34
    403
  • 218
    꽁술에서 꽁술먹자!
    마스터욱
    조회수 298   23-09-05 12:19
    마스터욱
    23-09-05 12:19
    298
  • 217
    CSS 로 만든 태극기 코드
    마스터욱
    조회수 285   23-08-15 23:48
    마스터욱
    23-08-15 23:48
    285
  • 216
    [2] 툼레이더 리부트 에러시 해결법 "failed to initialize direct3D with current settings" [2]
    마스터욱
    조회수 650   23-05-11 21:59
    마스터욱
    23-05-11 21:59
    650
글쓰기
검색
  • 1
  • 2
  • 3
  • …
  • 12
  • 다음

Search

개인정보처리방침
마스터욱. All rights reserved.

Close

0 명 접속중
Time Loading...