hashim1 commited on
Commit
13569cf
·
verified ·
1 Parent(s): 67d1dab

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -19
app.py CHANGED
@@ -80,7 +80,6 @@ app.config['SECRET_KEY'] = 'your-secret-key'
80
  # app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db?check_same_thread=False'
81
  app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://sql7760039:[email protected]/sql7760039'
82
 
83
-
84
  app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
85
  app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {
86
  'charset': 'utf8mb4' # تعيين الترميز UTF-8 لجميع الجداول
@@ -716,7 +715,7 @@ def send_message():
716
  @login_required
717
  def stream_messages(user_id):
718
  def event_stream():
719
- last_message_id = None # لتتبع آخر رسالة تم إرسالها
720
 
721
  while True:
722
  try:
@@ -727,36 +726,38 @@ def stream_messages(user_id):
727
  ).order_by(Message.created_at.desc())
728
 
729
  if last_message_id:
730
- query = query.filter(Message.id > last_message_id) # التحقق من الرسائل الجديدة فقط
731
 
732
  messages = query.limit(1).all()
733
 
734
  if messages:
735
  message = messages[0]
736
- last_message_id = message.id # تحديث آخر رسالة تم إرسالها
737
 
738
- # إرسال بيانات الرسالة
739
- yield f"data: {json.dumps({
740
  'message_id': message.id,
741
  'sender_id': message.sender_id,
742
  'receiver_id': message.receiver_id,
743
  'content': message.content,
744
  'file_url': message.file_url,
745
  'file_type': message.file_type,
746
- 'created_at': message.created_at.strftime('%Y-%m-%d %H:%M:%S'),
747
- 'watched_by_receiver': message.watched_by_receiver, # حالة مشاهدة المستقبل
748
- 'watched_by_sender': message.watched_by_sender # حالة مشاهدة المرسل
749
- })}\n\n"
750
 
751
- time.sleep(1) # انتظر ثانية قبل التحقق مرة أخرى
 
 
 
752
 
753
  except Exception as e:
754
  print(f"Error in SSE stream: {e}")
755
- time.sleep(5) # انتظر 5 ثوانٍ قبل إعادة المحاولة
756
 
757
  return Response(stream_with_context(event_stream()), content_type='text/event-stream')
758
 
759
-
760
  @app.route('/is_user_active/<int:user_id>')
761
  @login_required
762
  def is_user_active(user_id):
@@ -868,11 +869,10 @@ def stream_unread_count():
868
  last_count = unread_count
869
  yield f"data: {json.dumps({'unread_count': unread_count})}\n\n"
870
 
871
- time.sleep(1) # انتظر ثانية قبل التحقق مرة أخرى
872
 
873
  return Response(stream_with_context(event_stream()), content_type='text/event-stream')
874
 
875
-
876
  @app.route('/mark_message_as_seen/<int:message_id>', methods=['POST'])
877
  @login_required
878
  def mark_message_as_seen(message_id):
@@ -929,15 +929,18 @@ def stream_message_updates(user_id):
929
  last_update_time = messages[-1].last_updated # تحديث وقت التحقق الأخير
930
 
931
  for message in messages:
932
- yield f"data: {json.dumps({
 
933
  'message_id': message.id,
934
  'sender_id': message.sender_id,
935
  'receiver_id': message.receiver_id,
936
  'watched_by_receiver': message.watched_by_receiver,
937
- 'watched_by_sender': message.watched_by_sender
938
- })}\n\n"
 
 
939
 
940
- time.sleep(0.5) # تحقق كل 0.5 ثانية لتحسين الأداء
941
 
942
  return Response(stream_with_context(event_stream()), content_type='text/event-stream')
943
 
 
80
  # app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db?check_same_thread=False'
81
  app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://sql7760039:[email protected]/sql7760039'
82
 
 
83
  app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
84
  app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {
85
  'charset': 'utf8mb4' # تعيين الترميز UTF-8 لجميع الجداول
 
715
  @login_required
716
  def stream_messages(user_id):
717
  def event_stream():
718
+ last_message_id = None
719
 
720
  while True:
721
  try:
 
726
  ).order_by(Message.created_at.desc())
727
 
728
  if last_message_id:
729
+ query = query.filter(Message.id > last_message_id)
730
 
731
  messages = query.limit(1).all()
732
 
733
  if messages:
734
  message = messages[0]
735
+ last_message_id = message.id
736
 
737
+ # تحويل التاريخ إلى تنسيق قابل للتسلسل
738
+ message_data = {
739
  'message_id': message.id,
740
  'sender_id': message.sender_id,
741
  'receiver_id': message.receiver_id,
742
  'content': message.content,
743
  'file_url': message.file_url,
744
  'file_type': message.file_type,
745
+ 'created_at': message.created_at.strftime('%Y-%m-%d %H:%M:%S'), # تحويل التاريخ
746
+ 'watched_by_receiver': message.watched_by_receiver,
747
+ 'watched_by_sender': message.watched_by_sender
748
+ }
749
 
750
+ # إرسال بيانات الرسالة
751
+ yield f"data: {json.dumps(message_data)}\n\n"
752
+
753
+ time.sleep(1)
754
 
755
  except Exception as e:
756
  print(f"Error in SSE stream: {e}")
757
+ time.sleep(5)
758
 
759
  return Response(stream_with_context(event_stream()), content_type='text/event-stream')
760
 
 
761
  @app.route('/is_user_active/<int:user_id>')
762
  @login_required
763
  def is_user_active(user_id):
 
869
  last_count = unread_count
870
  yield f"data: {json.dumps({'unread_count': unread_count})}\n\n"
871
 
872
+ time.sleep(1)
873
 
874
  return Response(stream_with_context(event_stream()), content_type='text/event-stream')
875
 
 
876
  @app.route('/mark_message_as_seen/<int:message_id>', methods=['POST'])
877
  @login_required
878
  def mark_message_as_seen(message_id):
 
929
  last_update_time = messages[-1].last_updated # تحديث وقت التحقق الأخير
930
 
931
  for message in messages:
932
+ # تحويل التاريخ إلى تنسيق قابل للتسلسل
933
+ message_data = {
934
  'message_id': message.id,
935
  'sender_id': message.sender_id,
936
  'receiver_id': message.receiver_id,
937
  'watched_by_receiver': message.watched_by_receiver,
938
+ 'watched_by_sender': message.watched_by_sender,
939
+ 'last_updated': message.last_updated.strftime('%Y-%m-%d %H:%M:%S') # تحويل التاريخ
940
+ }
941
+ yield f"data: {json.dumps(message_data)}\n\n"
942
 
943
+ time.sleep(0.5)
944
 
945
  return Response(stream_with_context(event_stream()), content_type='text/event-stream')
946