2024/11/02 3

실시간 채팅 구현에 대해 araboza

Requirements일대일 채팅, 그룹 채팅 모두 가능해야 함.현재 열람중인 채팅방에서 발생하는 채팅 내용들을 실시간으로 확인해야 함.현재 열람 중인 채팅방이 아니더라도 좌측 목록에서 다른 채팅방으로부터의 알림을 실시간으로 받아야 함.채팅 내역은 데이터베이스에 저장되어, 브라우저를 새로 열고 로그인을 다시 해도 이전의 기록들을 보존&열람할 수 있어야 함.인증받은 사람만 채팅이 가능해야 함.Scenario1. A 가 채팅방을 연다.서버로부터 기존 채팅 내역들을 불러온다 (일반적인 HTTP 요청-응답)클라이언트와 서버가 웹소켓으로 연결된다. 2. A가 채팅방에 메세지를 보낸다.A의 클라이언트가 웹소켓을 통해 서버로 메세지를 전송한다.서버는 A가 연결된 웹소켓으로부터 데이터를 받고 핸들러를 호출한다.메세지..

web/snulion 2024.11.02

WAS, WSGI, ASGI에 대해 araboza

django는 웹 개발 프레임워크일 뿐이지, 웹 서버는 아님물론 django에서는 python manage.py runserver 커맨드를 통해 장고에서 기본적으로 제공하는 개발용 내장 서버 사용할 수 있다=> ssl 등 보안 프로토콜 적용 불가, 여러 프로세스 동시에 처리 불가 then, What's web server?웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램클라이언트 요청(주로 HTTP)에 맞는 응답(주로 web page 혹은 api 응답)을 생성 상기 언급한 웹 서버에서는 지정된 경로에 미리 데이터를 준비한 후 요청에 따라 그대로 돌려주는 역할의 정적 콘텐츠 서빙만을 수행 가능함ex) public 폴더에 들어갈만한 이..

web/snulion 2024.11.02

websocket에 대해 araboza

우리는 웹소켓 프로토콜을 통해 실시간 양방향 통신을 구현할 예정 How about HTTP Polling?polling = 하나의 프로그램이 다른 프로그램(혹은 장치)의 상태를 주기적으로 검사하여 일정 조건을 만족하면 자료를 처리하는 개념메시지를 원하는 클라이언트는 서버에게 일정 주기로 계속 Request를 전송서버 입장에서 클라이언트가 원하는 이벤트가 준비되었다면(도착했다면) HTTP Response 형태로 이를 반환해주고, 그렇지 않다면 요청은 실패 but,네트워크 리소스 많이 잡아먹음 오버헤드를 줄이기 위해 전송 주기 T를 길게 하면 실시간성이 떨어짐 cf) long polling = 요청 횟수에 따라 서버 부담이 급증하는 Polling 방식을 개선하기 위해 등장* 구체적으로는, 만약 전송할 데이터..

web/snulion 2024.11.02