[Python] 웹소켓 서버 / 클라이언트 구현 (WebSocket 라이브러리)

2024. 11. 27. 15:13·개발 | 프로젝트/Python

python은 웹소켓 개발을 위한 WebSockets 라이브러리를 지원한다.

  • WebSocket 프로토콜은 클라이언트와 서버 간의 양방향 통신을 가능하게 하는 기술로, HTTP 통신의 한계를 넘어 지속적이고 실시간의 데이터 교환을 필요로 하는 애플리케이션에 적합하다. 
  • WebSockets 라이브러리는 이 프로토콜을 쉽게 사용할 수 있게 해주며, 비동기 I/O를 통해 고성능 통신을 구현할 수 있도록 도와준다.

주요 기능

  • 간편한 서버 구축: WebSocket 서버를 쉽게 구축하고 실행할 수 있음
  • 비동기 지원: Python의 asyncio를 활용한 비동기 프로그래밍을 지원하여, 고성능 네트워킹 애플리케이션 개발이 가능
  • 클라이언트 연결 관리: WebSocket 클라이언트를 생성하고, 서버와의 연결을 관리할 수 있음
  • 메시지 핸들링: 텍스트 및 바이너리 메시지를 송수신하는 기능을 제공
  • 보안: SSL/TLS를 통한 암호화된 연결 지원으로 보안성을 강화

라이브러리 설치 

pip install websockets

 

 


간단한 예제 코드

- 웹소켓 서버 

import asyncio
import websockets

async def echo(websocket, path):
    print("클라이언트 연결됨")
    async for message in websocket:
        print(f"클라이언트로부터 메시지: {message}")
        await websocket.send("Hello, Client!") 

start_server = websockets.serve(echo, "localhost", 8765)

asyncio.get_event_loop().run_until_complete(start_server)
print("서버가 시작되었습니다...")
asyncio.get_event_loop().run_forever()

 

 

- 웹소켓 클라이언트

import asyncio
import websockets

async def hello():
    uri = "ws://localhost:8765"  # 서버 주소
    async with websockets.connect(uri) as websocket:
        await websocket.send("Hello, Server!") 
        response = await websocket.recv()  # 서버로부터 응답 받기
        print(f"서버로부터 응답: {response}")

asyncio.get_event_loop().run_until_complete(hello())

 

서버 코드 실행 후 클라이언트 코드를 실행하면 클라이언트가 서버에 메세지를 보내고 서버가 응답하는 과정을 확인할 수 있다.

'개발 | 프로젝트 > Python' 카테고리의 다른 글

웹 크롤링을 통한 데이터 수집 (Selenium) / NoSuchElementException  (0) 2025.03.05
[Python] execute() 함수 / exec()와의 차이 / cursor  (0) 2025.01.20
[Django] 장고의 MVT 패턴 (Model-View-Template)  (4) 2024.10.14
'개발 | 프로젝트/Python' 카테고리의 다른 글
  • 웹 크롤링을 통한 데이터 수집 (Selenium) / NoSuchElementException
  • [Python] execute() 함수 / exec()와의 차이 / cursor
  • [Django] 장고의 MVT 패턴 (Model-View-Template)
seulll
seulll
개인 공부 / 정리 블로그입니다
  • seulll
    seulll
    seulll
  • 전체
    오늘
    어제
    • 분류 전체보기 (329) N
      • 코딩테스트 (225) N
        • programmers (python) (156)
        • 백준 (python) (67) N
      • 자료구조 | 알고리즘 (14)
      • 개발 | 프로젝트 (40) N
        • Python (4)
        • Java | Spring (7)
        • Android (4) N
        • Unity (3)
        • API (4)
      • CS (15)
        • Network (5)
        • SQL (2)
        • OS (4)
      • 데이터 분석 (14)
      • 기타 (12)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 설정
  • 링크

    • GitHub
  • 인기 글

  • 태그

    confusion matrix
    티스토리챌린지
    train_test_split
    프로그래머스
    데이터분석
    모델 성능 평가
    카카오맵
    2 x n 타일링
    kakao map api
    코딩테스트
    카카오맵 api
    웹크롤링
    백엔드
    야근 지수
    프렌즈4블록
    파이썬
    API
    그리디 알고리즘
    오차행렬
    Python
    백엔드 개발자 역량
    대입 표현식
    박스플롯
    solving environment
    바다코끼리
    오블완
    Boxplot
    백엔드 개발자
    Greedy
    asterisk
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
seulll
[Python] 웹소켓 서버 / 클라이언트 구현 (WebSocket 라이브러리)
상단으로

티스토리툴바