hashim1 commited on
Commit
1e60c75
·
verified ·
1 Parent(s): 5e07f18

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -27
app.py CHANGED
@@ -77,7 +77,8 @@ def format_datetime(value):
77
  return value.strftime("%I:%M %p").replace("AM", "صباحاً").replace("PM", "مساءً") + " " + value.strftime("%Y-%m-%d")
78
 
79
  app.config['SECRET_KEY'] = 'your-secret-key'
80
- app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db?check_same_thread=False'
 
81
 
82
  app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
83
  app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {
@@ -714,7 +715,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,37 +726,36 @@ 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
- 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,10 +867,11 @@ def stream_unread_count():
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,20 +928,18 @@ def stream_message_updates(user_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():
@@ -1584,8 +1583,6 @@ def delete_video_from_playlist():
1584
  if __name__ == '__main__':
1585
  with app.app_context():
1586
  db.create_all()
1587
- # Session = scoped_session(sessionmaker(bind=db.engine))
1588
- app.run(debug=True, host="0.0.0.0")
1589
-
1590
-
1591
 
 
77
  return value.strftime("%I:%M %p").replace("AM", "صباحاً").replace("PM", "مساءً") + " " + value.strftime("%Y-%m-%d")
78
 
79
  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:J8nfnzMBDY@sql7.freesqldatabase.com/sql7760039'
82
 
83
  app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
84
  app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {
 
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
+ yield f"data: {json.dumps({
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
+ })}\n\n"
749
 
750
+ time.sleep(1) # انتظر ثانية قبل التحقق مرة أخرى
 
 
 
751
 
752
  except Exception as e:
753
  print(f"Error in SSE stream: {e}")
754
+ time.sleep(5) # انتظر 5 ثوانٍ قبل إعادة المحاولة
755
 
756
  return Response(stream_with_context(event_stream()), content_type='text/event-stream')
757
+
758
+
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
+
875
  @app.route('/mark_message_as_seen/<int:message_id>', methods=['POST'])
876
  @login_required
877
  def mark_message_as_seen(message_id):
 
928
  last_update_time = messages[-1].last_updated # تحديث وقت التحقق الأخير
929
 
930
  for message in messages:
931
+ yield f"data: {json.dumps({
 
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
+ })}\n\n"
 
 
938
 
939
+ time.sleep(0.5) # تحقق كل 0.5 ثانية لتحسين الأداء
940
 
941
  return Response(stream_with_context(event_stream()), content_type='text/event-stream')
942
+
943
  @app.route('/leave_chat', methods=['POST'])
944
  @login_required
945
  def leave_chat():
 
1583
  if __name__ == '__main__':
1584
  with app.app_context():
1585
  db.create_all()
1586
+ Session = scoped_session(sessionmaker(bind=db.engine))
1587
+ app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))
 
 
1588