from flask import Flask, request, jsonify
from queue import Queue
import threading
import time
app = Flask(__name__)
message_queues = {} # 클라이언트별 메시지 큐
clients = set() # 연결된 클라이언트 목록
@app.route('/register', methods=['POST'])
def register_client():
client_id = request.get_json()['client_id']
if client_id not in message_queues:
message_queues[client_id] = Queue()
clients.add(client_id)
return jsonify({"status": "success"})
@app.route('/send', methods=['POST'])
def send_message():
try:
data = request.get_json()
sender_id = data['sender_id']
encrypted_message = data['message']
# 서버는 메시지를 복호화하지 않고 그대로 전달
# 클라이언트 ID만 추가
message_with_sender = {
"sender_id": sender_id,
"encrypted_message": encrypted_message
}
# 다른 모든 클라이언트에게 메시지 전달
for client_id in clients:
if client_id != sender_id:
message_queues[client_id].put(message_with_sender)
return jsonify({"status": "success"})
except Exception as e:
return jsonify({"status": "error", "message": str(e)}), 400
@app.route('/receive', methods=['POST'])
def receive_messages():
client_id = request.get_json()['client_id']
if client_id in message_queues:
messages = []
while not message_queues[client_id].empty():
messages.append(message_queues[client_id].get())
return jsonify({"messages": messages})
return jsonify({"messages": []})
@app.route('/unregister', methods=['POST'])
def unregister_client():
client_id = request.get_json()['client_id']
if client_id in clients:
clients.remove(client_id)
del message_queues[client_id]
return jsonify({"status": "success"})
if __name__ == '__main__':
app.run(debug=True, port=5000)