条件に基づいて特定のレコードを取得し、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);
};