[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
개인 공부 / 정리 블로그입니다 https://github.com/seul1009
  • seulll
    seulll
    seulll
  • 전체
    오늘
    어제
    • 분류 전체보기 (341) N
      • 코딩테스트 (233) N
        • programmers (python) (156)
        • 백준 (python) (75) N
      • 자료구조 | 알고리즘 (14)
      • 개발 | 프로젝트 (43)
        • Python (4)
        • Java | Spring (7)
        • Android (5)
        • Unity (3)
        • API (4)
      • CS (15)
        • Network (5)
        • SQL (2)
        • OS (4)
      • 데이터 분석 (14)
      • 기타 (13)
  • 블로그 메뉴

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

    • GitHub
  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바