Add application file
Browse files
app.py
CHANGED
@@ -714,7 +714,7 @@ def send_message():
|
|
714 |
@login_required
|
715 |
def stream_messages(user_id):
|
716 |
def event_stream():
|
717 |
-
last_message_id = None
|
718 |
|
719 |
while True:
|
720 |
try:
|
@@ -725,36 +725,37 @@ def stream_messages(user_id):
|
|
725 |
).order_by(Message.created_at.desc())
|
726 |
|
727 |
if last_message_id:
|
728 |
-
query = query.filter(Message.id > last_message_id)
|
729 |
|
730 |
messages = query.limit(1).all()
|
731 |
|
732 |
if messages:
|
733 |
message = messages[0]
|
734 |
-
last_message_id = message.id
|
735 |
|
736 |
-
#
|
737 |
-
|
738 |
'message_id': message.id,
|
739 |
'sender_id': message.sender_id,
|
740 |
'receiver_id': message.receiver_id,
|
741 |
'content': message.content,
|
742 |
'file_url': message.file_url,
|
743 |
'file_type': message.file_type,
|
744 |
-
'created_at': message.created_at.strftime('%Y-%m-%d %H:%M:%S'),
|
745 |
-
'watched_by_receiver': message.watched_by_receiver,
|
746 |
-
'watched_by_sender': message.watched_by_sender
|
747 |
-
}
|
|
|
|
|
|
|
748 |
|
749 |
-
time.sleep(1)
|
750 |
|
751 |
except Exception as e:
|
752 |
print(f"Error in SSE stream: {e}")
|
753 |
-
time.sleep(5)
|
754 |
|
755 |
return Response(stream_with_context(event_stream()), content_type='text/event-stream')
|
756 |
-
|
757 |
-
|
758 |
@app.route('/is_user_active/<int:user_id>')
|
759 |
@login_required
|
760 |
def is_user_active(user_id):
|
@@ -866,11 +867,10 @@ def stream_unread_count():
|
|
866 |
last_count = unread_count
|
867 |
yield f"data: {json.dumps({'unread_count': unread_count})}\n\n"
|
868 |
|
869 |
-
time.sleep(1)
|
870 |
|
871 |
return Response(stream_with_context(event_stream()), content_type='text/event-stream')
|
872 |
|
873 |
-
|
874 |
@app.route('/mark_message_as_seen/<int:message_id>', methods=['POST'])
|
875 |
@login_required
|
876 |
def mark_message_as_seen(message_id):
|
@@ -927,18 +927,20 @@ def stream_message_updates(user_id):
|
|
927 |
last_update_time = messages[-1].last_updated # تحديث وقت التحقق الأخير
|
928 |
|
929 |
for message in messages:
|
930 |
-
|
|
|
931 |
'message_id': message.id,
|
932 |
'sender_id': message.sender_id,
|
933 |
'receiver_id': message.receiver_id,
|
934 |
'watched_by_receiver': message.watched_by_receiver,
|
935 |
-
'watched_by_sender': message.watched_by_sender
|
936 |
-
|
|
|
|
|
937 |
|
938 |
-
time.sleep(0.5)
|
939 |
|
940 |
return Response(stream_with_context(event_stream()), content_type='text/event-stream')
|
941 |
-
|
942 |
@app.route('/leave_chat', methods=['POST'])
|
943 |
@login_required
|
944 |
def leave_chat():
|
|
|
714 |
@login_required
|
715 |
def stream_messages(user_id):
|
716 |
def event_stream():
|
717 |
+
last_message_id = None
|
718 |
|
719 |
while True:
|
720 |
try:
|
|
|
725 |
).order_by(Message.created_at.desc())
|
726 |
|
727 |
if last_message_id:
|
728 |
+
query = query.filter(Message.id > last_message_id)
|
729 |
|
730 |
messages = query.limit(1).all()
|
731 |
|
732 |
if messages:
|
733 |
message = messages[0]
|
734 |
+
last_message_id = message.id
|
735 |
|
736 |
+
# تحويل التاريخ إلى تنسيق قابل للتسلسل
|
737 |
+
message_data = {
|
738 |
'message_id': message.id,
|
739 |
'sender_id': message.sender_id,
|
740 |
'receiver_id': message.receiver_id,
|
741 |
'content': message.content,
|
742 |
'file_url': message.file_url,
|
743 |
'file_type': message.file_type,
|
744 |
+
'created_at': message.created_at.strftime('%Y-%m-%d %H:%M:%S'), # تحويل التاريخ
|
745 |
+
'watched_by_receiver': message.watched_by_receiver,
|
746 |
+
'watched_by_sender': message.watched_by_sender
|
747 |
+
}
|
748 |
+
|
749 |
+
# إرسال بيانات الرسالة
|
750 |
+
yield f"data: {json.dumps(message_data)}\n\n"
|
751 |
|
752 |
+
time.sleep(1)
|
753 |
|
754 |
except Exception as e:
|
755 |
print(f"Error in SSE stream: {e}")
|
756 |
+
time.sleep(5)
|
757 |
|
758 |
return Response(stream_with_context(event_stream()), content_type='text/event-stream')
|
|
|
|
|
759 |
@app.route('/is_user_active/<int:user_id>')
|
760 |
@login_required
|
761 |
def is_user_active(user_id):
|
|
|
867 |
last_count = unread_count
|
868 |
yield f"data: {json.dumps({'unread_count': unread_count})}\n\n"
|
869 |
|
870 |
+
time.sleep(1)
|
871 |
|
872 |
return Response(stream_with_context(event_stream()), content_type='text/event-stream')
|
873 |
|
|
|
874 |
@app.route('/mark_message_as_seen/<int:message_id>', methods=['POST'])
|
875 |
@login_required
|
876 |
def mark_message_as_seen(message_id):
|
|
|
927 |
last_update_time = messages[-1].last_updated # تحديث وقت التحقق الأخير
|
928 |
|
929 |
for message in messages:
|
930 |
+
# تحويل التاريخ إلى تنسيق قابل للتسلسل
|
931 |
+
message_data = {
|
932 |
'message_id': message.id,
|
933 |
'sender_id': message.sender_id,
|
934 |
'receiver_id': message.receiver_id,
|
935 |
'watched_by_receiver': message.watched_by_receiver,
|
936 |
+
'watched_by_sender': message.watched_by_sender,
|
937 |
+
'last_updated': message.last_updated.strftime('%Y-%m-%d %H:%M:%S') # تحويل التاريخ
|
938 |
+
}
|
939 |
+
yield f"data: {json.dumps(message_data)}\n\n"
|
940 |
|
941 |
+
time.sleep(0.5)
|
942 |
|
943 |
return Response(stream_with_context(event_stream()), content_type='text/event-stream')
|
|
|
944 |
@app.route('/leave_chat', methods=['POST'])
|
945 |
@login_required
|
946 |
def leave_chat():
|