Firebase에서 실시간 채팅 구축
                                            
                                                
                                                
                                                
                                                
                                                
                                                 19354 단어  FirebaseJavaScriptHTMLmBaaschat
                    
최종 품목
이번에 웹 서비스를 이용하는 Firebase는 실시간 채팅을 시원하게 제작합니다.
 Firebase란 무엇입니까?
Firebase는 채팅 등 단말기 동지의 교환이 실시간성을 가지려고 할 때 자주 사용하는 응용 프로그램의 백엔드 서비스다.
터미널과 서버 사이, 터미널 간의 데이터 동기화 등 백엔드에서 진행되는 처리는 API를 제공한다.
Firebase 등록
Firebase 사이트를 방문하여 회원 로그인을 합니다.
https://www.firebase.com/login/
 애플리케이션 등록
로그인이 완료되면 여기서 새 응용 프로그램을 만듭니다.
 APPNAME를 클릭하면 아래 페이지에 접속하여 데이터베이스의 내용을 보고 다양한 설정을 할 수 있습니다.
 클라이언트 만들기
Firebase 라이브러리 가져오기
<script src="https://cdn.firebase.com/js/client/2.3.2/firebase.js"></script>
데이터베이스 연결
<YOUR-FIREBASE-APP>를 자신이 만든 응용 프로그램 이름 j로 변경합니다.
var myFirebaseRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/");
데이터 저장
데이터베이스에서push 함수를 사용하여 데이터를 저장합니다.
myFirebaseRef.child('messages').push({
  'message': 'こんにちは'
});
데이터 검색
데이터베이스에 어떤 데이터 변경이 발생하면 실시간으로 리셋 함수를 실행합니다.
myFirebaseRef.on('child_added', function(dataSnapshot) {
  //データベースに変更があった場合のコールバック処理
});
소스 코드
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script src="https://cdn.firebase.com/js/client/2.3.2/firebase.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <div class="panel-default">
        <div class="panel-heading">
            <p>リアルタイムチャットサンプル</p>
        </div>
        <div id="scroller" class="panel-body">
            <ul id='messages'>
            </ul>
        </div>
        <div class="panel-footer">
            <input type='text' class="form-control" id="nameInput" placeholder="ユーザー名を入力してください">
        </div>
        <div class="panel-footer">
            <input type='text' class="form-control" id="messageInput" placeholder="メッセージ内容を入力してください">
        </div>
    </div>
</body>
    <script src="chat.js"></script>
</html>
 ul,li{
    padding: 0;
    margin: 0;
    list-style-type: none;
    text-align: left;
}
#scroller {
    height: 500px;
    overflow: auto;
}
/*******************************
* 左からの吹き出し
********************************/
.left_balloon {
    position: relative;
    background: #f1f0f0;
    border: 0px solid #777;
    margin: 5px 10px;
    padding: 5px 10px;
    border-radius: 15px;
    width: 400px;
    clear: both;
}
/*******************************
* 右からの吹き出し
********************************/
.right_balloon {
    color: #fff;
    position: relative;
    background: #0084ff;
    border: 0px solid #777;
    margin: 5px 10px;
    padding: 5px 10px;
    border-radius: 15px;
    width: 400px;
    clear: both;
    float: right;
}
/*******************************
* 割り込みを解除
********************************/
.clear_balloon{
  clear: both;
}
.sender_name{
    margin-bottom: -5px;
    padding-left: 20px;
    color: rgba(0, 0, 0, .40);
}
.sender_name.me{
    float: right;
    padding: 0 20px 0 0;
}
 // データベースと接続する
var messagesRef = new Firebase('https://qiita.firebaseio.com/');
var messageField = $('#messageInput');
var nameField = $('#nameInput');
var messageList = $('#messages');
// ENTERキーを押した時に発動する
messageField.keypress(function (e) {
    if (e.keyCode == 13) {
        //フォームに入力された情報
        var username = nameField.val();
        var message = messageField.val();
        //データベースに保存する
        messagesRef.push({name:username, text:message});
        messageField.val('');
        $('#scroller').scrollTop($('#messages').height());
    }
});
// データベースにデータが追加されたときに発動する
messagesRef.limitToLast(10).on('child_added', function (snapshot) {
    //取得したデータ
    var data = snapshot.val();
    var username = data.name || "anonymous";
    var message = data.text;
    //取得したデータの名前が自分の名前なら右側に吹き出しを出す
    if ( username == nameField.val() ) {
        var messageElement = $("<il><p class='sender_name me'>" + username + "</p><p class='right_balloon'>" + message + "</p><p class='clear_balloon'></p></il>");
    } else {
        var messageElement = $("<il><p class='sender_name'>" + username + "</p><p class='left_balloon'>" + message + "</p><p class='clear_balloon'></p></il>");
    }
    //HTMLに取得したデータを追加する
    messageList.append(messageElement)
    //一番下にスクロールする
    messageList[0].scrollTop = messageList[0].scrollHeight;
});
다음은 창설된 채팅입니다.맨 오른쪽 대시보드에서 실시간으로 데이터가 추가된 것을 볼 수 있습니다.
 마지막
이번에 가장 간단한 것을 만들었지만 서버 쪽 언어로 사용자 인증을 하는 것을 만들고 싶습니다.
만약 이 보도의 내용에 오류나 문제가 있다면, 나는 네가 평론을 발표할 수 있기를 바란다.
Reference
이 문제에 관하여(Firebase에서 실시간 채팅 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryotakodaira/items/e41c3a60348a9e1c7616텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)