2015-09-05 11 views
10

मैं निम्नलिखित मॉड्यूल का उपयोग की जांच करने और यह रिवर्स प्रॉक्सी https://github.com/nodejitsu/node-http-proxy के लिए ठीक काम करता है सॉकेट वर्तमान में मैं निम्न उदाहरण की तरह कोड का उपयोग किया हैनोड प्रॉक्सी वेब

httpProxy.createServer({ 
    target: 'ws://localhost:9014', 
    ws: true 
}).listen(8014); 

मेरे सवाल कैसे कर सकते हैं है मैं चेक/अनुकरण करें कि websockets काम कर रहे हैं? किसी भी परीक्षा सहायक होगा ...

उत्तर

6

ब्राउज़र परीक्षण के लिए ओपी के अनुरोध के जवाब में, मैंने अपने मूल समाधान को HTTP और डब्ल्यूएस यातायात दोनों सर्वर पर प्रॉक्सी करने के लिए संशोधित किया जहां index.html फ़ाइल परोसा जाता है। यह फ़ाइल तब वेबसॉकेट के माध्यम से ब्राउज़र को प्रॉक्सी सर्वर से जोड़ती है, जो प्रॉक्सी तब मुख्य सर्वर पर प्रॉक्सी करती है। मुख्य सर्वर से ब्राउज़र दस्तावेज़ पर एक साधारण संदेश मुद्रित किया जाता है।

ताकि कॉपी करने के लिए/कोई जरूरत नहीं है कुछ भी पेस्ट है, मैं पूर्ण शिक्षा के साथ इस रेपो बनाया: https://github.com/caasjj/httpproxy.git

यहाँ है मामले दूसरों में कोड यहाँ इस पर गौर करना चाहते हैं। पूरी बात चलाने के लिए, दो सर्वर फ़ाइलें और index.html फ़ाइल बनाने node proxyreceiver.js और node proxyserver.js से सर्वर प्रारंभ और उसके बाद localhost:8014/index.html पर जाएँ।

(proxyserver.js):

var httpProxy = require('http-proxy'); 
var http = require('http'); 

var proxy = new httpProxy.createProxyServer({ 
    target: { 
    host: 'localhost', 
    port: 9014 
    } 
}); 
var proxyServer = http.createServer(function (req, res) { 
    proxy.web(req, res); 
}); 

// 
// Listen to the `upgrade` event and proxy the 
// WebSocket requests as well. 
// 
proxyServer.on('upgrade', function (req, socket, head) { 
    proxy.ws(req, socket, head); 
}); 

proxyServer.listen(8014); 

(proxyreceiver.js):

var app = require('http').createServer(handler) 
var io = require('socket.io')(app); 
var fs = require('fs'); 

app.listen(9014); 

function handler (req, res) { 
    res.writeHead(200); 
    fs.readFile('index.html', function(err, data){ 
     res.end(data); 
    }) 

} 

io.on('connection', function (socket) { 

    socket.emit('data', { message: 'Hello World!' }); 

    socket.on('resp', function(msg) { 
    console.log('Got message: ', msg); 
    }); 

}); 

(index.html):

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Web Socket Proxy Test</title> 
    <script src="https://cdn.socket.io/socket.io-1.3.5.js"></script> 
    <script> 
    var socket = io('http://localhost:8014'); 
    var p = document.createElement("p") 
    socket.on('data', function (data) { 
     console.log('Got', data); 
     p.innerHTML = "Received:" + data.message; 
     document.body.appendChild(p); 
    }); 
</script> 
</head> 
<body> 
    <h1>Test ProxyServer</h1> 
</body> 
</html> 
+0

आपको बहुत बहुत धन्यवाद 1 +, मैं उन 3 फ़ाइलें बनाई और नोड एप्लिकेशन शुरू और फ्लॉप किसी भी त्रुटि मिलती है, मुद्दा है कि जब मैं ब्राउज़र में (जैसे पद 8014/9014 में) कुछ भी नहीं भी सांत्वना में होती हैं, किसी भी विचार क्या याद आ रही है यूआरएल डाल? मैं अतिरिक्त कदम (इस विषय :) करने के लिए नए im) की आवश्यकता है –

+0

कृपया ध्यान दें कि हम नहीं कर रहे हैं ब्राउज़र में किसी भी प्रस्तुत करने योग्य एचटीएमएल वापस कर रहा है। कनेक्शन को सत्यापित करने के लिए आपके मूल प्रश्न को केवल टेस्ट कोड की आवश्यकता थी, और इस तरह मैंने जवाब लिखा था। क्या आप क्लाइंट को सर्वर से कनेक्ट करने में सक्षम थे, अनुरोध प्रॉक्सी किया गया है और फिर प्रतिक्रिया प्राप्त करें? यदि ऐसा है, तो यह सत्यापित करता है कि वेब सॉकेट कनेक्शन प्रॉक्सी सर्वर के माध्यम से काम कर रहा है। यदि आपको ब्राउज़र परीक्षण कोड की आवश्यकता है, तो मुझे आपको अतिरिक्त कोड प्रदान करने की आवश्यकता होगी। – caasjj

+0

ब्राउज़र पर चलाने के लिए परीक्षण कोड के साथ अद्यतन किया गया। अगर आपको इसकी आवश्यकता है तो कृपया मुझे बताएं। – caasjj

1

परीक्षण करने के लिए सबसे अच्छा तरीका यह करने के लिए कनेक्ट करने के लिए एक ग्राहक बनाने के लिए है। आसपास के कई ws मॉड्यूल हैं। या फिर आप इस का उपयोग कर सकते हैं: https://www.websocket.org/echo.html सिर्फ वहाँ अपने यूआरएल डाल दिया और यह परीक्षण करें।

+0

आप कैसे मैं इसे से कनेक्ट करने के ग्राहक बना सकते हैं उदाहरण प्रदान करें सकते हैं ? –

+0

बस लिंक में प्रदान किए गए एक का उपयोग करें। आप एक ग्राहक आप Node.js का उपयोग करें और एक मॉड्यूल कहा जाता है का उपयोग कर सकते बनाना चाहते हैं 'ws' – DevAlien

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