2013-05-12 8 views
8

मैं node-http-proxy के साथ भी काम करने के लिए websockets प्राप्त करने का प्रयास कर रहा हूं। अंतर मैं एक proxytable उपयोग कर रहा है कर रहा हूँ:प्रॉक्सीटेबल और websockets के साथ नोड http प्रॉक्सी

var options = { 
router: { 
    'a.websterten.com': '127.0.0.1:150', 
    'b.websterten.com' : '127.0.0.1:151', 
} 
}; 

var server = httpProxy.createServer(options); 

मैंने कोशिश की:

server.on('upgrade', function (req, socket, head) { 
    server.proxy.proxyWebSocketRequest(req, socket, head); 
}); 

लेकिन यह काम करने के लिए प्रतीत नहीं होता। एक त्वरित जांच के लिए कि क्या WebSockets काम से पता चलता मैं क्रोम से Unexpected response code: 400 मिल देखने के लिए (ठीक काम करता है अगर मैं सीधे जाने के)

इसके अलावा server.on('upgrade',.. एक WebSocket अनुरोध

मैं कैसे प्राप्त कर सकते हैं पर आग नहीं करता चेकों के एक जोड़े कर मेरी वेबसाइकिलों को सही ढंग से रूट करने के लिए प्रॉक्सी सर्वर?

मैं भी नोड 0.8.23 के साथ-साथ नोड 0.10.x (नोड के बाद के संस्करणों एक स्मृति रिसाव मुद्दा है, लेकिन यह अभ्यस्त या तो 0.8.23 पर काम)

उत्तर

2

जब आप पर इस की कोशिश की है httpProxy.createServer() का उपयोग करें, upgrade ईवेंट को संभालने के लिए आवश्यक नहीं है क्योंकि http-प्रॉक्सी स्वचालित रूप से इसे संभालती है। इस प्रकार, आपके server.on('upgrade', ...) कभी आग नहीं करते क्योंकि http-प्रॉक्सी पहले से ही इसे आंतरिक रूप से संभालने वाला है।

केवल समय आप server.on('upgrade') क्या करने की जरूरत है जब आप httpProxy.createServer को मिडलवेयर कार्यों पारित या मैन्युअल http.createServer() के साथ सर्वर बनाया है आपने है।

दूसरे शब्दों में, वेबसाइकिलों को आपकी कॉन्फ़िगरेशन में प्रॉक्सी के माध्यम से "बस काम करना चाहिए"।


हालांकि, http-प्रॉक्सी में WebSocket समर्थन streams2 (नोड कोर were completely rewritten in 0.10 में धारा एपीआई) की वजह से currently broken on node v0.10.x है। भी, स्ट्रीम -2 समस्या के लिए botched fix की वजह से http-proxy (0.10.2) की नवीनतम रिलीज नोड v0.8 में टूट गई है। http-प्रॉक्सी अपनी internals के पुनर्लेखन के लिए streams2 से निपटने के लिए के लिए

  1. प्रतीक्षा:

    तो तुम दो विकल्प हैं।

  2. नोड v0.8.23 और http-प्रॉक्सी 0.10.1 में डाउनग्रेड करें। (कम से कम जब तक # 1 होता है।)

(आप npm install [email protected] चलाकर NPM मॉड्यूल के पुराने संस्करण स्थापित कर सकते हैं।)

+0

मैं इस की कोशिश की है, के साथ या बिना उन्नयन कुछ नहीं होता, मैं भी न त्रुटियों मिल या तो अंततः यह दुर्घटनाग्रस्त हो जाता है। मैं प्रॉक्सी टेबल उदाहरण का उपयोग कर रहा हूं और मेजबाननामों को अन्य लोगों में संशोधित करता हूं, कोई अन्य संपादन – Akshat

+0

@ अक्षत: आगे के शोध से पता चलता है कि यह वास्तव में नोड 0.10 के साथ असंगतता है। अद्यतन देखें। – josh3736

+0

मुझे लगता है, मुझे हाल ही के अपडेट के साथ 0.8.2 के साथ भी समस्या थी। क्या इसके लिए कोई कामकाज नहीं है? – Akshat

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