웹소켓 등장 이전의 기술
Polling : 새로운 메시지가 있는지 계속 서버에게 물어보기
- 미친 요청 수(request)와 Latency
Long Polling:메시지가 있거나, TimeOut할때까지 request 잠깐 기다렸다가 response
- Polling보다는 request 요청이 적지만 그래도 많음
Streaming :이벤트가 발생했을 때 응답을 내려주되, 응답을 완료시키지 않고 계속 연결을 유지하는 방식
- 연결 시간이 길어질수록 연결 유효성 관리의 부담
- Request, Response 헤더가 불필요하게 크다.
웹소켓(WebSocket)
웹소켓(WebSocket) : 두 프로그램 간의 메시지를 교환하기 위한 통신 방법
웹소켓과 HTTP 통신의 비교 : 수립된 연결을 어떻게 하느냐?
연결성 ↔ 비연결성
HTTP와 다르게, 한번 연결이 수립되고 나면 간단한 메시지밖에 오가지 않는다 (= 통신에 드는 비용 감소)
웹소켓의 특징
1. 양방향 통신(Full-Duplex)
-
- 서로에게 원할때 데이터를 주고 받을 수 있다.
- 통상적 http 통신은 Client가 요청을 보내는 경우에만 Server가 응답할 수 있는 단방향 통신
2. 실시간 네트워크(Real-time Network)
-
- 연속된 데이터를 빠르게 노출 ex) 채팅, 주식, 비디오 데이터
HTML5 이후로 나와서, 그 이전의 기술로 구현된 서비스에서는 사용안됨
→ 웹소켓을 지원하지 않는 브라우저에선 Socket.io, SockJS 로 웹소켓'처럼' 보여지게 기능을 콜백


STOMP(Simple Text Oriented Messaging Protocal)
STOMP는 TCP나 WebSocket같은 양방향 네트워크 프로토콜 기반으로 동작

파이썬에서 SocketIO, flask_socketio를 이용해서 간단한 채팅 애플리케이션을 구현해봤다.

브라우저에서 테스트 확인 잘됨
WebSocket-sharp.dll 오류
그리고 팔자에도 없던 웹소켓을 공부한 가장 큰 이유는 진행중인 게임 프로젝트.
로비를 웹서버로 돌려서 게임서버와 분리하니까 생긴 문제....
서버에서 매치메이킹 연산이 끝나고 사용자들에게 알려줄 방법이 없다,,
그래서 고안해낸게 초기 방식의 Polling 통신 >> 너무 구려서 웹소켓을 접목하고자 가볍게 Flask로 먼저 만들어본거임
C# 환경인 Unity3d 엔진 구조상 지원하는 라이브러리중에 가장 간편한게 websocket-sharp.dll
https://github.com/sta/websocket-sharp
GitHub - sta/websocket-sharp: A C# implementation of the WebSocket protocol client and server
A C# implementation of the WebSocket protocol client and server - sta/websocket-sharp
github.com
자료 찾아보면 유니티에서 웹소켓 클라이언트로 쓴 사람들이 분명 있는데, 난 안되더라..
웹서버의 socket.io 의 버전을 못따라와서 생기는 문제인줄 알고 다운그레이드도 몇번 시도해봤지만..
http GET 요청으로 진행하는 초기의 Hand-Shaking 과정에서 400 Bad Request를 뱉어버림. 같은 서버로 브라우저에서 여는건 잘되는데요?
좀 뜯어보니 Handshaking 에서 'Host: localhost:5000' 이 가야하는데 'Host:localhost' 만 가는데 내잘못은 아닌듯함
결국 포기하고 매치메이킹만 게임서버에 접속해서 시도하도록 고치는 방향으로 진행했고, 기술적인 부분은 완성 단계에 옴.
나중에 나도 쓰게 websocket-sharp - 400 bad request 문제 해결하신 분 저도 알려주세요ㅠ
'tech' 카테고리의 다른 글
데이터베이스 인덱스는 왜 B-tree를 사용하는가? (0) | 2025.03.12 |
---|---|
ARIMA를 이용한 향후 5일간 비트코인(BTC) 종가 예측 프로젝트 (0) | 2024.11.17 |
Pandas를 통해 포항시 인구수 분표를 시각화해보자 (1) | 2024.11.17 |
인공지능을 이용해서 가상화폐 가격을 예측해보자(Adaboost, Ensemble, LSTM) (0) | 2024.11.17 |