Showing posts with label html. Show all posts

Pada kesempatan kali ini saya ingin berbagi kepada para developer semua tentang Membuat Realtime Chat dengan menggunakan Firebase. Buat yang belum tau apa itu FireBase silakan baca disini Apa itu FIREBASE?

Sebelum ke praktek mari kita bahas dulu Kenapa harus menggunakan Firebase? toh pake Ajax bisa?. Jawabannya adalah Jika kita menggunakan ajax memerlukan proses request secara berulang-ulang yang dibutuhkan untuk mengambil data dari server sehingga akan membebankan server. Sedangkan jika kita menggunakan Firebase kita tidak perlu request data untuk mendapatkan sebuah data melainkan server yang akan memberikan data itu ketika ada sebuah perubahan. Contoh ketika kita menggunakan ajax agar realtime maka aplikasi kita akan melakukan request setiap 500ms sekali dengan kata lain 1 second terdapat 2 Request secara berulang ketika ada 100 user dalam waktu 1 Detik maka terdapat 200 request dalam 1 Detik dan terus menerus setiap menit, jam, hari, bulan dan server kita lebih sering Down. Berikut adalah penjelasan yang saya pelajari dan saya pahami.

Nah kalo sudah paham kita lanjutkan tutorialnya. Pertama yang harus kita lakukan adalah menuju ke Firebase Console berikut link nya https://console.firebase.google.com.


Lalu kita buat proyek baru, akan muncul form isian lalu isi nama proyek dan negaranya.


Selanjutnya kita klik menu Database lalu pilih tab Aturan lalu buat menjadi seperti ini :

Lalu klik Publikasikan.

Selanjutnya kita pilih tab Data dan buat Child dengan nama Chat dan Value "" seperti ini :



Oke, settingan untuk aturan sudah selesai sekarang kita menuju menu Overview lalu klik menu Tambahkan Firebase ke aplikasi web Anda. Maka akan muncul popup seperti gambar dan click salin.



Langkah selanjutnya adalah membuat file HTML untuk chat formnya dan jangan lupa menyispkan code dari popup yang sudah kita salin tadi dari firebase, kurang lebih seperti berikut :
 
 <html>  
 <head>  
      <title>Realtime Chat</title>  
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">  
      <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>  
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>  
      <style>  
           .message-bubble   
           {  
                padding: 10px 0px 10px 0px;  
           }  
           .message-bubble:nth-child(even) { background-color: #F5F5F5; }  
           .message-bubble > *  
           {  
                padding-left: 10px;    
           }  
           .panel-body { padding: 0px; }  
           .panel-heading { background-color: #3d6da7 !important; color: white !important; }  
      </style>  
 </head>  
 <body>  
      <div class="container">  
           <div class="row">  
                <div class="panel panel-default">  
                 <div class="panel-heading">Panel heading without title</div>  
                 <div class="panel-body">  
                     <div class="container" id="chat_data">  
                     </div>  
                     <div class="panel-footer">  
                          <div class="row">  
                               <div class="col-md-4">  
                                    <input type="text" id="name" class="form-control">  
                               </div>  
                               <div class="col-md-8">  
                                    <div class="input-group">  
                                     <input type="text" id="msg" class="form-control">  
                                     <span class="input-group-btn">  
                                         <button class="btn btn-default" type="button">Send</button>  
                                     </span>  
                                    </div>  
                               </div>  
                          </div>  
                     </div>  
                 </div>  
                </div>  
           </div>  
      </div>  
      <script src="https://www.gstatic.com/firebasejs/3.6.3/firebase.js"></script>  
      <script>  
           // Initialize Firebase  
           var config = {  
                apiKey: "AIzaSyAmW1Y2cudtWX_jTYUde01-yKz1K-WnMgk",  
                authDomain: "realtime-chat-6c6e4.firebaseapp.com",  
                databaseURL: "https://realtime-chat-6c6e4.firebaseio.com",  
                storageBucket: "realtime-chat-6c6e4.appspot.com",  
                messagingSenderId: "31374372226"  
           };  
           firebase.initializeApp(config);  
           $(document).ready(function(){  
                var rootchatref = firebase.database().ref('/');  
                var chatref = firebase.database().ref('/Chat');  
                chatref.on('child_added', function(snapshot) {  
                     var data = snapshot.val();  
                     //console.log(data);  
                     $('#chat_data').prepend('<div class="row message-bubble"><p class="text-muted">'+data.user+'</p><span>'+data.msg+'</span></div>');  
                });  
           });  
           function writeChat(user, msg) {  
            // A post entry.  
            var postData = {  
                msg : msg,  
                user: user,  
            };  
            // Get a key for a new Post.  
            var newPostKey = firebase.database().ref().child('Chat').push().key;  
            // Write the new post's data simultaneously in the posts list and the user's post list.  
            var updates = {};  
            updates['/Chat/'+newPostKey] = postData;  
            return firebase.database().ref().update(updates);  
           }  
           $("#msg").keypress(function(e) {  
                var name = $('#name').val();  
                var msg = $('#msg').val();  
                if(e.which == 13) {  
                     if(name == ''){  
                          alert('Isi nama terlebih dahulu..');  
                          $('#name').focus();  
                          return false;  
                     }  
                     if(msg == ''){  
                          alert('Pesan tidakk boleh kosong');  
                          $('#msg').focus();  
                          return false;  
                     }  
                     writeChat(name, msg);  
                     $('#msg').val('');  
                }  
           });  
      </script>  
 </body>  
 </html>  

Oke semua sudah selesai. dan untuk mencobanya kita buka 2 Browser untuk membuktikan Jika Chat Ini realtime.



Berhasil dan realtime :D
Mungkin cukup sekian sharingnya kali ini semoga bermanfaat untuk teman-teman semua.




Sekarang penulis akan bahas tentang Material Design buatan Google, jadi Material Design adalah bahasa desain yang dikembangkan Google dan diumumkan pada konferensi Google I/O pada 25 Juni 2014. Memperluas pada motif “kartu” yang pertama kali terlihat pada Google Now, adalah desain dengan peningkatan penggunaan layout berbasis grid, animasi dan transisi responsif, padding, dan efek kedalaman seperti pencahayaan dan bayangan. Desainer Matías Duarte menjelaskan bahwa “tidak seperti kertas nyata, Desain Material kami dapat memperluas dan melakukan reformasi yang cerdas. Material memiliki permukaan fisik dan tepi. Jahitan dan bayangan memberikan makna tentang apa yang dapat Anda sentuh.” Google menyatakan bahwa bahasa desain baru mereka didasarkan pada kertas dan tinta.

Desain material dapat digunakan di Android versi 2.1 dan setelahnya melalui v7 appcompat library, yang digunakan pada hampir semua perangkat Android yang dibuat setelah tahun 2009. Desain Material secara bertahap akan meluas ke seluruh berbagai produk web dan mobile Google, memberikan pengalaman yang konsisten di semua platform dan aplikasi. Google juga telah merilis antarmuka pemrograman aplikasi (API) untuk pengembang pihak ketiga untuk menggabungkan bahasa desain ke dalam aplikasi mereka.

Pada 2015, Desain Material yang tergabung dalam sebagian besar aplikasi mobile Google untuk Android termasuk Gmail, YouTube, Google Drive, Google Docs, Google Sheets,Google Slides, Google Maps, Inbox, dan semua aplikasi Google Play, dan sebagian kecil di Chrome Browser dan Google Keep; serta dalam antarmuka web desktop Google Drive, Docs, Sheets, Slide dan Inbox.



Kabar gembiranya, sekarang kita udah bisa memakai material design buatan google ini, baik di aplikasi android, iphone , maupun website. Sudah banyak framework dan library yang mengusuk tema material design.



Berikut listnya :

CSS Framework (Website)
  1. http://materializecss.com/
  2. http://www.material-ui.com/
  3. https://www.muicss.com/
  4. https://getmdl.io/

Pandu Septian Gumilar

{picture#http://kekirian.com/wp-content/uploads/2015/12/10419440_814838468537519_2081836625630750537_n-150x150.jpg} YOUR_PROFILE_DESCRIPTION {facebook#YOUR_SOCIAL_PROFILE_URL} {twitter#YOUR_SOCIAL_PROFILE_URL} {google#YOUR_SOCIAL_PROFILE_URL} {pinterest#YOUR_SOCIAL_PROFILE_URL} {youtube#YOUR_SOCIAL_PROFILE_URL} {instagram#YOUR_SOCIAL_PROFILE_URL}
Powered by Blogger.