Server-Sent Events पर एक नज़र डालें। सर्वर-प्रेषित घटनाक्रम ब्राउज़र API है जो आपको अपने सर्वर पर सॉकेट खोलने देता है, अद्यतनों की स्ट्रीम की सदस्यता लेता है। अधिक जानकारी के लिए एलेक्स मैकका ( जुगर्नॉट के लेखक) why he kills juggernaut पर पोस्ट करें और क्यों सरल सर्वर-प्रेषित घटनाएं मैनी मामलों में वेबसाइटों की तुलना में नौकरी के लिए बेहतर टूल हैं।
प्रोटोकॉल वास्तव में आसान है। बस अपने प्रतिक्रिया में mimetype text/event-stream
जोड़ें। ब्राउज़र कनेक्शन को खुला रखेगा और अपडेट के लिए सुनेगा। सर्वर से भेजे गए एक ईवेंट data:
और निम्न नईलाइन से शुरू होने वाली टेक्स्ट की एक पंक्ति है।
data: this is a simple message
<blank line>
यदि आप संरचित डेटा का आदान-प्रदान करना चाहते हैं, तो बस अपने डेटा को जेसन के रूप में डंप करें और जेसन को तार पर भेजें।
एक लाभ यह है कि आप एक अतिरिक्त सर्वर की आवश्यकता के बिना फ्लास्क में SSE का उपयोग कर सकते है। गीथब पर एक साधारण chat application example है जो एक पब/उप बैकएंड के रूप में रेडिस का उपयोग करता है।
def event_stream():
pubsub = red.pubsub()
pubsub.subscribe('chat')
for message in pubsub.listen():
print message
yield 'data: %s\n\n' % message['data']
@app.route('/post', methods=['POST'])
def post():
message = flask.request.form['message']
user = flask.session.get('user', 'anonymous')
now = datetime.datetime.now().replace(microsecond=0).time()
red.publish('chat', u'[%s] %s: %s' % (now.isoformat(), user, message))
@app.route('/stream')
def stream():
return flask.Response(event_stream(),
mimetype="text/event-stream")
आप उदाहरण अनुप्रयोग चलाने के लिए gunicron उपयोग करने की आवश्यकता नहीं है। बस जब एप्लिकेशन चला सूत्रण का उपयोग सुनिश्चित करें, क्योंकि अन्यथा SSE कनेक्शन अपने विकास सर्वर को अवरुद्ध कर देगा: ग्राहक के पक्ष तुम सिर्फ एक जावास्क्रिप्ट हैंडलर समारोह की जरूरत है जो जब एक नया संदेश बुलाया जाएगा पर
if __name__ == '__main__':
app.debug = True
app.run(threaded=True)
सर्वर से धक्का दिया जाता है।
var source = new EventSource('/stream');
source.onmessage = function (event) {
alert(event.data);
};
सर्वर-से भेजे घटनाक्रम हाल फायरफॉक्स, क्रोम और सफारी ब्राउज़र द्वारा supported हैं। इंटरनेट एक्सप्लोरर अभी तक सर्वर-से भेजे गए इवेंट का समर्थन नहीं करता है, लेकिन संस्करण से 10 में उन्हें समर्थन करने के लिए आशा की जाती है कि पुराने ब्राउज़र
[यहां पिछले महीने से एक प्रासंगिक लेख है, जो फ्लास्क के मुख्य डेवलपर आर्मीन रोनाकर द्वारा किया गया है।] (Http://lucumr.pocoo.org/2012/8/5/stateless-and-proud/) – dumbmatter
संबंधित: [स्ट्रीमिंग पायथन और फ्लास्क के साथ डेटा] (http://stackoverflow.com/q/13386681/4279) – jfs