전체 글 132

WebRTC - 실시간 채팅 APP 만들기 (5)

chat 기능 구현하기, nickname value 추가하기 백엔드로 보내야 할 데이터 : 닉네임, 메세지 그런데, 백엔드는 이 두 개의 데이터를 알아서 구분하지 못한다. 따라서 분기 처리하는 코드가 필요해 보인다. 메세지를 구분하기 위해서 type 설정을 한다. JSON 형태로 type과 payload를 함께 보내는 것이 좋겠다. { type: "message", payload: "Hello", }, { type: "nickname", payload: "Anonymous", } JSON.stringfy로 string형태로 백엔드로 보내주면, 백엔드에서 JSON.parse를 통해 객체 형태로 출력이 가능하다. makeMessage 함수(app.js) const makeMessage = (type, pay..

Frontend/Javascript 2023.04.13

WebRTC - 실시간 채팅 APP 만들기 (4)

🔖 WebSocekt( ) 링크 : https://developer.mozilla.org/ko/docs/Web/API/WebSocket 웹소켓 객체 생성하기 Ex) const socket =newWebSocket('ws://localhost:8080'); 이벤트리스너를 사용할 수 있다. 종류 : connection, close, error, headers, listening 그 중 connection을 사용할 건데, 연결 되었으면, 어떤 이벤트를 실행해~ 와 같은 의미이다. 이 메서드는 콜백으로 socket을 받는데, 쉽게 설명하자면 브라우저에 연결된 건너편의 누군가이다. socket을 이용하면 메세지를 주고 받고 할 수 있게 된다. 프론트 단 (app.js)에서도 socket을 정의, 백 단(serve..

Frontend/Javascript 2023.04.13

WebRTC - 실시간 채팅 APP 만들기 (3)

이제까지 했던 세팅들을 정리해보자면, 다음과 같다. (1) pug로 뷰 엔진 설정 (2) express로 template이 어디에 있는지 지정(정적 리소스들) (3) public url을 생성해서 유저에게 보여줌 (4) home.pug를 렌더링해주는 라우터 handler 설정 약간의 편리한 스타일 적용을 위해 MVP.css를 html에 추가한다. (link=stylesheet)사용 https://andybrewer.github.io/mvp/ MVP.css - Minimalist stylesheet for HTML elements A decent MVP in no time More building and less designing with "set and forget" styling. "Uber for X..

Frontend/Javascript 2023.04.13

WebRTC - 실시간 채팅 APP 만들기 (2)

2. 프론트 세팅 폴더세팅 - src/public 폴더 생성 ㄴ js 폴더 생성 ㄴ app.js 파일 생성 - src/views 폴더 생성 ㄴ home.pug 파일 생성 home.pug에서 일반적인 html을 우선 작업한다. doctype html html(lang="en") head meta(charset="UTF-8") meta(http-equiv="X-UA-Compatible", content="IE=edge") meta(name="viewport", content="width=device-width, initial-scale=1.0") title RTC body h1 It works! pug 세팅을 위해 server.js에서 import express from "express"; const app..

Frontend/Javascript 2023.04.13

WebRTC - 실시간 채팅 APP 만들기 (1)

1. 백엔드 세팅 npm init -y 명령어를 실행하면 package.json이 생성된다. scripts, main은 삭제해주고, 기타 필요한 부분만 작성해준다. { "name": "zoom", "version": "1.0.0", "description": "Zoom Clone using WebRTC and WebSockets", "license": "MIT" } nodemon 설치 npm i nodemon -D * babel.config.json 파일 생성 * nodemon.json 파일 생성 * src 폴더 생성 ㄴ server.js 생성 바벨설치 npm i @babel/core @babel/cli @babel/node @babel/preset-env -D .gitignore에 /node_modul..

Frontend/Javascript 2023.04.13

React - 도넛 애니메이션 차트 만들기(with conic-gradient)

[개요] 반시계 방향으로 도넛차트가 줄어드는 함수 구현하기 [방법] conic-gradient라는 css 속성을 활용 setInterval( ) 함수로 일정시간 동안 타이머처럼 원의 영역이 줄어들도록 구현함 1. conic-gradient https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/conic-gradient conic-gradient() - CSS: Cascading Style Sheets | MDN The conic-gradient() CSS function creates an image consisting of a gradient with color transitions rotated around a center point (rather t..

Frontend/React 2023.04.13

React Study - 3. State

리액트의 또다른 코어 컨셉 중 하나인 State에 대해 알아보자. 리액트를 한 번이라도 접해본 사람이라면 "상태값"이라는 단어를 아마도 많이 들어봤을 것이다. 이 상태값인 "state"는 말 그대로 상태가 변경되는 값으로 컴포넌트 내부에서 변경될 수 있다. 웹 브라우저에서는 다양한 상호작용으로 인해 화면 자체에 빈번한 변화가 생긴다. 예를 들면, 폼 안에 입력 필드를 수정하면 업데이트되고, 슬라이드 되는 화면에서 "다음"버튼을 누르면 다음 슬라이드가 보이며, "장바구니에 담기"를 클릭하면 장바구니에 담기는 것들이 모두 interaction이다. 컴포넌트들은 현재 input의 입력 값, 현재의 슬라이드 페이지, 장바구니 등을 "기억"해야 한다. 리액트에서는 이러한 종류의 컴포넌트 별 메모리(기억 저장소 쯤..

Frontend/React 2023.04.10

React Study - 2. 리액트 시작하기

연습문제를 작성해보기에 앞서 프로젝트 세팅을 해보려고 한다. 번들러는 Vite를 사용하였고, Vite + Typescript + SWC 를 사용하여 프로젝트를 생성하였다. 아래 명령어를 입력하여 간단하게 Vite 프로젝트를 시작할 수 있다. https://vitejs-kr.github.io/guide/ Vite Vite, 차세대 프런트엔드 개발 툴 vitejs-kr.github.io SWC는 Speedy Web Compiler의 약자로, Rust로 만든 자바스크립트 컴파일러 & 번들링 툴이다. 찾아보니 주로 Next.js와 호환하여 많이 사용하는 듯하다. (참고 글 : https://fe-developers.kakaoent.com/2022/220217-learn-babel-terser-swc/ ) 아무튼..

Frontend/React 2023.04.09

React Study - 1. Why React?

리액트란? - UI를 랜더링하기 위한 자바스크립트 라이브러리이다. - 공식문서 리액트를 설명하기에 앞서 대부분의 자바스크립트 기반의 프레임워크는 MVC(model-view-controller), MVVM(model-view-view-modal) 아키텍쳐를 사용한다. 여기서 모델은 데이터를 직접관리하는 영역 / 뷰는 사용자에게 보이는 영역 / 컨트롤러는 모델 데이터 조회, 수정, 변경된 사항을 뷰에 반영하는 영역이다. 일반적으로는 사용자의 어떤 행위가 발생하면 컨트롤러를 통해 뷰를 수정한다. 어떤 데이터가 변할 때마다 어디가 변했는지를 확인하는 것보다 그냥 아예 뷰를 갈아끼우는 방법을 고안한 것이 바로 리액트이다. 리액트는 정해진 규칙에 따라 뷰를 새로 렌더링하기로 한 오직 뷰(View) 만 신경쓰는 라이..

Frontend/React 2023.04.07