Modify the server to allow for universal message handling.
This commit is contained in:
parent
8f9f786b23
commit
093da92186
1 changed files with 22 additions and 27 deletions
|
|
@ -68,6 +68,22 @@ def get_client_uuid(client_socket, uuid_dict):
|
|||
|
||||
return user_id
|
||||
|
||||
def handle_message(username, chat_room, message):
|
||||
"""Store the message in history and broadcast it to all clients."""
|
||||
# Store the message in the chat room's history
|
||||
if chat_room not in message_history:
|
||||
message_history[chat_room] = []
|
||||
message_history[chat_room].append(f"{username}: {message}")
|
||||
|
||||
# Broadcast the message to WebSocket clients in the chat room
|
||||
socketio.emit('message', {'username': username, 'message': message}, room=chat_room)
|
||||
|
||||
# Broadcast the message to socket-based clients in the chat room
|
||||
send_message = f"{username} >> {message}".encode('utf-8')
|
||||
for client_sock in socket_list:
|
||||
if client_sock != server_socket and chat_rooms.get(client_sock) == chat_room:
|
||||
client_sock.send(send_message)
|
||||
|
||||
# REST API Endpoints
|
||||
@app.route('/send_message', methods=['POST'])
|
||||
def send_message():
|
||||
|
|
@ -80,16 +96,8 @@ def send_message():
|
|||
if not username or not message:
|
||||
return jsonify({"error": "Username and message are required"}), 400
|
||||
|
||||
# Store the message in the chat room's history
|
||||
if chat_room not in message_history:
|
||||
message_history[chat_room] = []
|
||||
message_history[chat_room].append(f"{username}: {message}")
|
||||
|
||||
# Broadcast the message to all clients in the same chat room
|
||||
send_message = f"{username} >> {message}".encode('utf-8')
|
||||
for client_sock in socket_list:
|
||||
if client_sock != server_socket and chat_rooms.get(client_sock) == chat_room:
|
||||
client_sock.send(send_message)
|
||||
# Use the centralized message handling function
|
||||
handle_message(username, chat_room, message)
|
||||
|
||||
return jsonify({"status": "Message sent and saved in history"}), 200
|
||||
|
||||
|
|
@ -160,13 +168,8 @@ def handle_send_message(data):
|
|||
emit('error', {'message': 'Username and message are required'})
|
||||
return
|
||||
|
||||
# Store the message in the chat room's history
|
||||
if chat_room not in message_history:
|
||||
message_history[chat_room] = []
|
||||
message_history[chat_room].append(f"{username}: {message}")
|
||||
|
||||
# Broadcast the message to the chat room
|
||||
emit('message', {'username': username, 'message': message}, room=chat_room)
|
||||
# Use the centralized message handling function
|
||||
handle_message(username, chat_room, message)
|
||||
|
||||
# Chat server logic
|
||||
def chat_server():
|
||||
|
|
@ -287,17 +290,9 @@ def chat_server():
|
|||
else:
|
||||
username = client_info[sock]["username"]
|
||||
chat_room = chat_rooms[sock]
|
||||
send_message = f"{username} >> {message}".encode('utf-8')
|
||||
|
||||
# Store the message in the chat room's history
|
||||
if chat_room not in message_history:
|
||||
message_history[chat_room] = []
|
||||
message_history[chat_room].append(f"{username}: {message}")
|
||||
|
||||
# Broadcast the message to all clients in the same chat room
|
||||
for client_sock in socket_list:
|
||||
if client_sock != server_socket and chat_rooms.get(client_sock) == chat_room:
|
||||
client_sock.send(send_message)
|
||||
# Use the centralized message handling function
|
||||
handle_message(username, chat_room, message)
|
||||
else:
|
||||
sock.close()
|
||||
socket_list.remove(sock)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue