84 lines
2.4 KiB
Python
84 lines
2.4 KiB
Python
import requests
|
|
import sys
|
|
|
|
SERVER_URL = "http://localhost:8000"
|
|
|
|
def post_message(user_name, content):
|
|
"""서버로 메시지를 전송합니다."""
|
|
payload = {
|
|
"name": user_name,
|
|
"message": content
|
|
}
|
|
|
|
try:
|
|
|
|
response = requests.post(f"{SERVER_URL}/messages", json=payload)
|
|
if response.status_code == 200:
|
|
print("전송 성공!")
|
|
return True
|
|
else:
|
|
print(f"전송 실패: {response.text}")
|
|
return False
|
|
|
|
except Exception as e:
|
|
print(f"오류 발생: {e}")
|
|
return False
|
|
|
|
def get_messages(start_index):
|
|
"""서버로부터 새로운 메시지를 가져옵니다."""
|
|
try:
|
|
response = requests.get(f"{SERVER_URL}/messages", params={"start": start_index})
|
|
|
|
if response.status_code == 200:
|
|
new_messages = response.json()
|
|
if not new_messages:
|
|
print("새로운 메시지가 없습니다.")
|
|
else:
|
|
for msg in new_messages:
|
|
print(f"[{msg['timestamp']}] {msg['name']}: {msg['message']}")
|
|
return new_messages
|
|
else:
|
|
print(f"메시지 수신 실패: {response.text}")
|
|
return []
|
|
|
|
except Exception as e:
|
|
print(f"오류 발생: {e}")
|
|
return []
|
|
|
|
def main():
|
|
print("FastAPI 채팅 클라이언트에 오신 것을 환영합니다!")
|
|
user_name = input("이름을 입력해주세요 > ").strip()
|
|
if not user_name:
|
|
user_name = "Anonymous"
|
|
|
|
start_index = 0
|
|
|
|
while True:
|
|
print("\n수행할 작업을 선택해주세요:")
|
|
print("1. 메시지 전송")
|
|
print("2. 수신한 메시지 보기")
|
|
print("3. 종료")
|
|
|
|
choice = input("> ").strip()
|
|
|
|
if choice == "1":
|
|
message_content = input("메시지 내용: ").strip()
|
|
if message_content:
|
|
post_message(user_name, message_content)
|
|
else:
|
|
print("메시지를 입력해주세요.")
|
|
|
|
elif choice == "2":
|
|
new_msgs = get_messages(start_index)
|
|
start_index += len(new_msgs)
|
|
|
|
elif choice == "3":
|
|
print("프로그램을 종료합니다.")
|
|
sys.exit(0)
|
|
|
|
else:
|
|
print("잘못된 입력입니다. 1~3 사이의 숫자를 입력해주세요.")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|