2012-10-30 15 views
15

में वेबसाइकिल और डब्लूएसजीआई का संयोजन करना मैं एक वैज्ञानिक प्रयोग पर काम कर रहा हूं जहां लगभग दो दर्जन परीक्षण व्यक्ति एक-दूसरे के साथ/साथ एक बारी-बारी से खेल खेलते हैं। अभी, यह एक डब्ल्यूएसजीआई इंटरफेस के साथ एक पायथन वेब ऐप है। मैं websockets के साथ प्रयोज्यता में वृद्धि करना चाहता हूं: जब सभी खिलाड़ियों ने अपना मोड़ पूरा कर लिया है, तो मैं सभी ग्राहकों को अपनी स्थिति अपडेट करने के लिए सूचित करना चाहता हूं। अभी, हर किसी को या तो टर्न टाइमआउट के लिए इंतजार करना होगा, या लगातार पुनः लोड करना होगा और "टर्न अभी भी प्रगति पर है" त्रुटि संदेश फिर से दिखाई नहीं दे रहा है (व्यस्त प्रतीक्षा, प्रभावशाली)।एक अजगर ऐप

मैं कई WebSocket पुस्तकालयों 'प्रलेखन के माध्यम से पढ़ सकते हैं और मैं समझता हूँ कि कैसे काम WebSockets, लेकिन मैं WSGI और WebSockets मिश्रण के लिए वास्तुकला के बारे में निश्चित नहीं हूँ: मैं एक WebSockets और एक ही प्रक्रिया में एक WSGI सर्वर मिल सकता है (और यदि तो, कैसे, वास्तव में किसी भी websockets लाइब्रेरी का उपयोग कर) और बस एक डब्लूएसजीआई हैंडलर से my_websocket.send_message() पर कॉल करें, या मेरे पास एक अलग websockets सर्वर होना चाहिए और कुछ आईपीसी करना चाहिए? या मुझे उन्हें बिल्कुल मिश्रण नहीं करना चाहिए?

संपादित करें, 6 महीने बाद: मैंने डब्लूएसजीआई सर्वर के साथ एकीकृत करने के बजाय एक अलग websockets सर्वर प्रक्रिया (Autobahn का उपयोग करके) शुरू कर दिया। कारण यह था कि उनमें से दो को अलग करने के लिए यह बहुत आसान और क्लीनर है, और डब्लूएसजीआई प्रक्रिया (सर्वर से सर्वर संचार) से websockets सर्वर से बात करना सीधे आगे था और websocket-client का उपयोग करके पहले प्रयास पर काम किया।

यह एक WSGI वेब एप्लिकेशन चलाता है (इस मामले में बोतल आधारित है, लेकिन कुछ भी WSGI अनुरूप हो सकता है) के साथ साथ एक:

+0

यदि आप एक का उपयोग कर रहे हैं, तो आप किस पाइथन वेब ढांचे का उपयोग कर रहे हैं? – John

+0

अभी कोई नहीं, लेकिन मैं किसी भी सुझाव के लिए खुला हूं। – Simon

+0

उस मामले में अच्छी तरह से मैं फ्लास्क का उपयोग करने के लिए दूसरा ओबरस्टेट सुझाव। – John

उत्तर

14

यहाँ एक उदाहरण है कि आप क्या चाहते है वेब सर्वर सर्वर 1 सर्वर और 1 पोर्ट के तहत।

आप वेब हैंडलर के भीतर से डब्ल्यूएस संदेश भेज सकते हैं। Autobahn WebSocket के शीर्ष पर PubSub भी प्रदान करता है, जो आपके मामले में नोटिफिकेशन भेजने (WampServerProtocol.dispatch के माध्यम से) को बहुत सरल बनाता है।

प्रकटीकरण: मैं और ऑटोबान के लेखक Tavendo के लिए काम करते हैं।

+0

बहुत बढ़िया, यह वही है जो मैं ढूंढ रहा था! इसके अलावा, मुझे अभी तक Websockets के शीर्ष पर प्रोटोकॉल के बारे में पता नहीं था। – Simon

+0

WAMP (= वेबकॉकेट पर आरपीसी + पबसब) के त्वरित परिचय के लिए, http://wamp.ws/ – oberstet

+0

बस्टेड गिटब लिंक देखें, और नया संस्करण डब्लूएसजीआई ऐप नहीं लगता है ... – pjz

संबंधित मुद्दे