hashim1 commited on
Commit
95a452e
·
1 Parent(s): 8cbed0a

Add application file

Browse files
Files changed (1) hide show
  1. app.py +22 -20
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
- yield f"data: {json.dumps({
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
- })}\n\n"
 
 
 
748
 
749
- time.sleep(1) # انتظر ثانية قبل التحقق مرة أخرى
750
 
751
  except Exception as e:
752
  print(f"Error in SSE stream: {e}")
753
- time.sleep(5) # انتظر 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
- yield f"data: {json.dumps({
 
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
- })}\n\n"
 
 
937
 
938
- time.sleep(0.5) # تحقق كل 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():