redis 와 python을 활용한 채팅 프로그램 만들기 ( Pub/Sub 활용 )
2023. 4. 20. 18:54ㆍit
반응형
python과 redis를 활용해서 채팅프로그램 만드는 것을 알아보겠다.
기본적인 프로그램이다. 쉽게 따라해보길 바란다.
이 예제에서는 입력받은 채팅 메시지를 Redis의 Pub/Sub 메커니즘으로 발행(Publish)하는 클라이언트이다.
import redis
redis_client = redis.Redis(host='localhost', port=6379, db=0)
1. 구독(Subscribe)하는 클라이언트를 구현한다.
반응형
def publish(channel):
while True:
message = input()
redis_client.publish(channel, message)
위 코드에서는 입력받은 메시지를 redis_client.publish()를 이용하여 Redis의 Pub/Sub 메커니즘으로 채널에 발행(Publish)하고 있다.
2. 다음으로는 메시지를 받아 화면에 출력하는 구독(Subscribe) 클라이언트를 구현한다.
728x90
def subscribe(channel):
pubsub = redis_client.pubsub()
pubsub.subscribe(channel)
for message in pubsub.listen():
print(message['data'].decode('utf-8'))
위 코드에서는 Redis 클라이언트로 redis_client.pubsub()를 호출하여 Pub/Sub 메커니즘을 사용하도록 설정한다. 그리고 pubsub.subscribe()를 이용하여 해당 채널에 구독(Subscribe)하도록 만들었다. pubsub.listen()으로 메시지를 받아 화면에 출력한다.
3. 이제 마지막으로 해당 코드를 엮는 main 문을 작성한다.
if __name__ == '__main__':
channel = 'chat_room'
# 새로운 스레드를 생성하여 발행(Publish) 클라이언트를 실행
pub_thread = threading.Thread(target=publish, args=(channel,))
pub_thread.start()
# 현재 스레드에서 구독(Subscribe) 클라이언트를 실행
subscribe(channel)
실행을 위해서는 두개의 쓰레드가 필요하다.
하나는 publish() , 다른 하나는 Subscribe() 에 필요한 쓰레드 이다.
이렇게 구현된 예제는 사용자가 채팅 메시지를 입력하면 해당 메시지를 Redis의 Pub/Sub 메커니즘으로 발행(Publish)하고, 다른 클라이언트에서 해당 채널을 구독(Subscribe)하여 받은 메시지를 화면에 출력한다.
반응형
'it' 카테고리의 다른 글
Redis를 활용한 Message Queue(Pub/Sub) 만들기 ( with python ) (0) | 2023.04.20 |
---|---|
레디스(redis)에서 큐(Queue) 사용해보기 (1) | 2023.04.20 |
tar、tar.gzファイルの圧縮および解凍方法 (0) | 2023.04.14 |
tar, tar.gz 파일의 압축과 압축 해제 방법 (0) | 2023.04.14 |
Vim設定:マウスサポート、自動補完、ショートカットなどの便利な機能 (0) | 2023.04.14 |