Firebase에 온라인 채팅 애플리케이션 배포(1시간 과정)

12015 단어 JavaScriptBaaSFirebase
며칠 전인 13일 요코하마에서 열렸다.
놀랍게도 15시까지 매시간Google for Mobile 2016의 이야기가 나오는데 구글의 Fireabase에 대한 노력은 어쩔 수 없는 느낌이다!
Firebase 주제 강연 시간수 컨텐트 등단자 9:30-10:50 Firebase의 개요 [동시통역] Laurence Moroney 세션 중단 시간수 컨텐트 등단자 -11:30 Firebase Analytics의 사용법[동시통역] Fontaine Foxworth -12:00 Firebase 데이터베이스, 저장, 관리의 사용 방법 [동시통역] Jacob Wenger / Mike Mcdonald -12:30 Firebase를 사용하여 고품질 어플리케이션 제작[동시통역] Doug Stevenson -13:00 Firebase를 사용하여 응용 프로그램의 공동 로그인을 실현하는 방법 [동시통역] Laurence Moroney -13:30 Firebase 알림 사용하기 [동시통역] Thomas Bouldin -14:00 Firebase에 설정된 응용 프로그램 인덱스(App Indexing)[동시통역] Laurence Moroney -14:30 Firebase 사례 연구 오가와 겐타로(小川健太郞) 선생, 사이타마(埼玉) 선생, 야마시타 다케오(山下大介) 선생 -15:00 Firebase Analytics를 통한 애플리케이션 업그레이드 가능성 횡산명자, 국지혜, 복서우수 앞으로 더 떠들썩해질 것 같은데. 그럼 Firebase는 어떤 건가요? 웹 및 응용 프로그램의 서비스 개발과 관련된 대부분의 서비스를 지원합니다. Analytics, Push, 실시간 DB, 스토리지, 관리, 디바이스 테스트, A/B 테스트...이미 뭐든지 할 수 있는 느낌이야.그리고 거의 공짜예요. 실제로 구글 씨는 한 시간이면 완성할 수 있는 샘플 응용 프로그램의 강좌를 준비했다. 이것을 만지면 실시간 데이터베이스, 저장, 위탁 관리에 관해서 Firebase에 대해 잘 알고 있다고 생각합니다.
해보니 두 시간 정도 걸렸어요.^^;
이번에는 그 에센스만 꺼내서 이 Qiita 페이지에 쓰세요.
그래서 나는 예정대로 한 시간이면 완성할 수 있다고 생각한다.
그럼 시작할게요.

Firebase에 온라인 채팅 애플리케이션 배포(1시간 과정)


↓ 만든 물건은 이렇다
실시간 인터넷 채팅 응용 프로그램 구축 (영어)

1 개요(60분 남았음)


Firebase를 사용하여 간단한 웹 응용 프로그램과 Firebase를 사용하여 채팅 클라이언트를 배치합니다.

뭐 공부 해요?


• Firebase 실시간 데이터베이스 및 스토리지 사용
· Firebase 인증
• Firebase에 호스팅되는 웹 애플리케이션 공개

뭐 공부 해요?


· 텍스트 편집기, WebStorm, Atom 등.
/샘플 코드 (2로 만든 녀석)
Sublime

2 예제 코드 가져오기(59분 남음)


복제본브라우저
명령 시 git clone https://github.com/firebase/friendlychat

3 애플리케이션 가져오기(57분 남았음)


클론의 web-start 디렉토리를 사용합니다.

4 Firebase 프로젝트 제작 및 어플리케이션 설정 (56분 남았음)


항목 만들기


Github 샘플 코드 페이지에서 새 항목 단추 클릭

애플리케이션 인증


웹 응용 프로그램에 Firebase 추가 를 선택합니다.
그래서 다음javascript의 부분을 얻었습니다.
복사 버튼을 눌러 index.htmlTODO에 붙여넣기
Firebase 콘솔
여기에는 storageBucket 값이 "" 인 경우가 있으므로 창을 잠시 닫고 "웹 응용 프로그램에 Firebase 추가"를 다시 선택하십시오.

구글 인증 활성화


Firebase 콘솔에서
Auth> 로그인 방법 설정 > Goole > 슬라이딩 활성화 > 저장
태그 요소의 표시 속성을 수정합니다.

5 Firebase 명령행 설치(51분 남았음)


Firebase Command Line Interface(CLI)는 로컬에서 만든 응용 프로그램을 Firebase의 호스팅 서비스로 업그레이드하는 데 필수적이다
먼저 Firebase 콘솔에서 선택Hosting시작 설명서 단추를 누릅니다.
그 다음에는 화면으로만 진행됩니다.
CLI가 필요하지 않은 경우npm 설치
설치에 실패하면 node.js 이 필요합니다.
설치가 끝난 후 명령으로 아래를 두드리다
firebase version
3.*.* 같은 걸로 하면 돼요.2.*.*나오면 이미 낡았어요.
Firebase에 로그인합니다.명령줄에서
firebase login
cd 에서 web-start 디렉터리로 이동하여 다음 명령을 실행합니다
firebase use --add
여기에 나타나는 항목 Id 선택

6개 애플리케이션 시작 (49분 남았음)

web-start 폴더에서 다음 명령 실행
firebase serve
h ttp://localhost:5000/나오면 브라우저에서
npm의 구역 설정 변경이면 돼!
샘플 어플이 보일 거예요.
그냥 이렇게 하면 아무것도 할 수 없어서 수정했어요.

7 사용자 로그인 기능(48분 남았음)


Firebase 인증 초기화

scripts/main.js함수를 수정해야 하는 곳
FriendlyChat.prototype.initFirebase = function() {
  // Shortcuts to Firebase SDK features.
  this.auth = firebase.auth();
  this.database = firebase.database();
  this.storage = firebase.storage();
  // Initiates Firebase auth and listen to auth state changes.
  this.auth.onAuthStateChanged(this.onAuthStateChanged.bind(this));
};

구글 Firebase 인증


main.js의 FriendlyChat.prototype.initFirebasescripts/main.js 함수
// Signs-in Friendly Chat.
FriendlyChat.prototype.signIn = function() {
  // Sign in Firebase using popup auth and Google as the identity provider.
  var provider = new firebase.auth.GoogleAuthProvider();
  this.auth.signInWithPopup(provider);
};
FriendlyChat.prototype.signIn
    // Sign out of Firebase.
    this.auth.signOut();
FriendlyChat.prototype.signOut
    // Get profile pic and user's name from the Firebase user object.
    var profilePicUrl = user.photoURL; // Only change these two lines!
    var userName = user.displayName;   // Only change these two lines!
FriendlyChat.prototype.onAuthStateChanged
  // Return true if the user is signed in Firebase
  if (this.auth.currentUser) {
    return true;
  }
여기에 쓰거나 브라우저를 다시 불러오거나 명령으로 치거나FriendlyChat.prototype.checkSignedInWithMessage브라우저firebase serve에 구글의 로그인 기능이 오른쪽에 설치되어 있어야 한다

8 메시지 읽기(38분 남았음)


Firebase 콘솔 역할의 데이터베이스 섹션 클릭
"//(←/세로로 정렬됨) 단추의 localhost:5000 단추를 누릅니다.
로컬JSONをインポート 디렉토리의 firebase_sample 을 가져오면 됩니다.

동기화 메시지


main.편집 jsinitial_messages.json
FriendlyChat.prototype.loadMessages = function() {
  // Reference to the /messages/ database path.
  this.messagesRef = this.database.ref('messages');
  // Make sure we remove all previous listeners.
  this.messagesRef.off();

  // Loads the last 12 messages and listen for new ones.
  var setMessage = function(data) {
    var val = data.val();
    this.displayMessage(data.key, val.name, val.text, val.photoUrl, val.imageUrl);
  }.bind(this);
  this.messagesRef.limitToLast(12).on('child_added', setMessage);
  this.messagesRef.limitToLast(12).on('child_changed', setMessage);
};
여기에 쓰거나 브라우저를 다시 불러오거나 명령으로 치거나FriendlyChat.prototype.loadMessages브라우저firebase serve에 구글의 로그인 기능이 오른쪽에 설치되어 있어야 한다

9 데이터베이스 보안 규칙(나머지 28분)


보안 규칙 설정


검증을 설정할 수 있습니다.null 검사 같은 거.
방법은 Firebase 콘솔 화면의 Databease 섹션의 규칙 탭에 있습니다.
기본 규칙은 이렇습니다.
{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}
9 항목은 선택 사항입니다.

메시지 10개(23분 남았음)


실시


main.js의 localhost:5000
// Saves a new message on the Firebase DB.
FriendlyChat.prototype.saveMessage = function(e) {
  e.preventDefault();
  // Check that the user entered a message and is signed in.
  if (this.messageInput.value && this.checkSignedInWithMessage()) {
    var currentUser = this.auth.currentUser;
    // Add a new message entry to the Firebase Database.
    this.messagesRef.push({
      name: currentUser.displayName,
      text: this.messageInput.value,
      photoUrl: currentUser.photoURL || '/images/profile_placeholder.png'
    }).then(function() {
      // Clear message text field and SEND button state.
      FriendlyChat.resetMaterialTextfield(this.messageInput);
      this.toggleButton();
    }.bind(this)).catch(function(error) {
      console.error('Error writing new message to Firebase Database', error);
    });
  }
};
여기에 쓰거나 브라우저를 다시 불러오거나 명령으로 치거나FriendlyChat.prototype.saveMessage브라우저 firebase serve 에서 발송이 설치되어 있어야 합니다.

11 이미지 전송 (남은 18분)


Firebase 스토리지에 이미지 저장


main.js의 localhost:5000
// Saves the a new message containing an image URI in Firebase.
// This first saves the image in Firebase storage.
FriendlyChat.prototype.saveImageMessage = function(event) {

  ...

  // Check if the user is signed-in
  if (this.checkSignedInWithMessage()) {

    // We add a message with a loading icon that will get updated with the shared image.
    var currentUser = this.auth.currentUser;
    this.messagesRef.push({
      name: currentUser.displayName,
      imageUrl: FriendlyChat.LOADING_IMAGE_URL,
      photoUrl: currentUser.photoURL || '/images/profile_placeholder.png'
    }).then(function(data) {

      // Upload the image to Firebase Storage.
      var uploadTask = this.storage.ref(currentUser.uid + '/' + Date.now() + '/' + file.name)
          .put(file, {'contentType': file.type});
      // Listen for upload completion.
      uploadTask.on('state_changed', null, function(error) {
        console.error('There was an error uploading a file to Firebase Storage:', error);
      }, function() {

        // Get the file's Storage URI and update the chat message placeholder.
        var filePath = uploadTask.snapshot.metadata.fullPath;
        data.update({imageUrl: this.storage.ref(filePath).toString()});
      }.bind(this));
    }.bind(this));
  }
};

Firebase 스토리지에서 이미지 보기


main.js의 FriendlyChat.prototype.saveImageMessage
// Sets the URL of the given img element with the URL of the image stored in Firebase Storage.
FriendlyChat.prototype.setImageUrl = function(imageUri, imgElement) {
  // If the image is a Firebase Storage URI we fetch the URL.
  if (imageUri.startsWith('gs://')) {
    imgElement.src = FriendlyChat.LOADING_IMAGE_URL; // Display a loading image first.
    this.storage.refFromURL(imageUri).getMetadata().then(function(metadata) {
      imgElement.src = metadata.downloadURLs[0];
    });
  } else {
    imgElement.src = imageUri;
  }
};
여기에 쓰거나 브라우저를 다시 불러오거나 명령으로 치거나FriendlyChat.prototype.setImageUrl브라우저 firebase serve 에서 이미지 전송이 설치되어 있어야 합니다.

12 스토리지 보안 규칙(남은 8분)


이것도 9와 마찬가지로 검증을 설정할 수 있다.선택할 수 있는 것이기 때문에 이번에는 생략했다

13 Firebase 호스팅에 애플리케이션 배포(3분 남았음)


firebase.json을
{
  // 9のステップを踏んだ場合は以下のコメントを外す
  // "database": {
  //   "rules": "database-rules.json"
  // },
  // 12のステップを踏んだ場合は以下のコメントを外す
  // "storage": {
  //   "rules": "storage.rules"
  // },
  "hosting": {
    "public": "./",
    "ignore": [
      "firebase.json"//,
      // "database-rules.json",//9のステップを踏んだ場合はコメントを外す(上の行のコメントも)
      // "storage.rules"// 12のステップを踏んだ場合はコメントを外す(同上)
    ]
  }
}
현재 디렉터리의 이름이 localhost:5000 이기 때문에 public 디렉터리를 복사하여 디렉터리 이름을 web-start 로 변경합니다.
수정 후 명령줄에서 public 디렉터리로 이동public그리고 다음 명령을 내리면 배치가 완료됩니다.
firebase deploy
지금 인터넷에 공개가 됐습니다!
간단한 실시간 채팅은 이걸로 할 수 있어요.
여기서 마치겠습니다.
그나저나 자바스크립트만으로 웹 서비스를 만들면 서버, AWS, Heroku를 임대할 필요가 없다.이거
파이어베이스 대단하다~
또 Firebase 단락이야.

좋은 웹페이지 즐겨찾기