1

条件に基づいて特定のレコードを取得し、msgarr に保存しています。

ここでサーバー送信イベントを使用しています(現在、socketioまたはその他の概念を使用するための提案は必要ありません)。ブラウザーを開いたときに、msgarr からのデータが完全にプッシュされます。

しかし、別のコンピューターまたは電話で別のブラウザーを開くと、msgarr からのデータがこのブラウザーまたは他のブラウザーにプッシュされます。そのランダム。

接続されているすべてのブラウザーが msgarr からデータを取得できるようにするにはどうすればよいですか?

以下は私のpythonフラスコサーバーコードです:

Python フラスコ サーバー:

@app.route('/_receive')
def receive():

   msgarr=[]
   conn = sqlite3.connect(db_path)
   sql="SELECT * FROM MESSAGES WHERE ROU='U' and NAME!='%s'" % (session.get('username'))
   cursor=conn.execute(sql);
   for row in cursor:
       msg='<div style="float:left;padding:7px;margin:3px 0px 3px 8px;background-color:#FEFEFE;clear:both;max-width:290px;border-radius: 10px;border-bottom: 1px solid #BEBEBE;word-wrap: break-word">'+'<div style="color: #BBBBBB;    font-size: small;    font-family: serif;">'+row[0]+'</div>'+row[1]+'<div style="color: #BBBBBB;    font-size: small;    font-family: serif;">'+row[3]+'</div></div>'
       msgarr.append(msg)
       sql="UPDATE MESSAGES SET ROU='R' where TEXT='%s' and NAME!='%s'" % (row[1],session.get('username'))
       conn.execute(sql);
   conn.commit()
   conn.close()

   def eventStream():
       str1 = ''.join(msgarr)
       strlength = len(str1)
       if strlength > 0:
           yield "data: {}\n\n".format(str1)
    return Response(eventStream(), mimetype="text/event-stream")

以下は私のクライアントコードです:

var source = new EventSource('/_receive');
    source.onmessage=function(event) {

        $("#result").append(event.data);


    };
4

0 に答える 0