2014-07-02 6 views
11

मैं वेब सॉकेट का उपयोग कर आईओएस ऐप और नोडजेएस सर्वर के बीच वास्तविक समय में संवाद करने के लिए नोडजेएस के लिए eniaros/ws मॉड्यूल का उपयोग कर रहा हूं।मैं wode (सुरक्षित ws) कनेक्शन स्वीकार करने के लिए NodeJS के लिए einaros/ws मॉड्यूल कैसे सेट कर सकता हूं?

ऐप ठीक चलाता है, लेकिन अब मुझे wss का उपयोग कर सर्वर और आईओएस ऐप के बीच संचार सुरक्षित करना होगा। मैं अपने रैपिड SSL प्रमाणपत्र और कुंजी है और मैं सर्वर पर निम्न कोड का उपयोग कर रहा:

var fs = require('fs'); 

var cfg = { 
    ssl: true, 
    port: 8081, 
    ssl_key: 'key.key', 
    ssl_cert: 'cert.crt' 
}; 

var httpServ = (cfg.ssl) ? require('https') : require('http'); 

var app  = null; 

// dummy request processing 
var processRequest = function(req, res) { 

    res.writeHead(200); 
    res.end("All glory to WebSockets!\n"); 
}; 

if (cfg.ssl) { 

    app = httpServ.createServer({ 

     // providing server with SSL key/cert 
     key: fs.readFileSync(cfg.ssl_key), 
     cert: fs.readFileSync(cfg.ssl_cert) 

    }, processRequest).listen(cfg.port); 

} else { 

    app = httpServ.createServer(processRequest).listen(cfg.port); 
} 

// passing or reference to web server so WS would knew port and SSL capabilities 
var WebSocketServer = require('ws').Server; 
var wss = new WebSocketServer({ server: app }); 

कोड काफी उदाहरण GitHub पर ws/examples/ssl.js फ़ाइल में दी गई है, लेकिन किसी कारण NodeJS/ws सर्वर के लिए किसी भी wss सॉकेट कनेक्शन स्वीकार नहीं करता है।

मैं सही पथ wss का उपयोग कर रहा हूं: // REMOTE_SERVER_IP: 8081/और मैं http://www.websocket.org/echo.html के साथ परीक्षण कर रहा हूं।

मैंने दूर-दराज की खोज की है लेकिन eniaros/ws का उपयोग करके सुरक्षित wss को सेटअप करने के तरीके पर एक अद्यतित ट्यूटोरियल प्रतीत नहीं होता है।

+0

कोड का वह टुकड़ा अपेक्षाकृत बड़ा है, इसलिए मैं इस बात को हाइलाइट करना चाहता हूं कि यह काम करने के लिए कुंजी 'https' उदाहरण को '{port: 80}' के बजाय 'new WebSocketServer()' पर भेज रहा है। [यहां अधिक जानकारी] (http://stackoverflow.com/q/31338927/722036)। उम्मीद है की यह मदद करेगा। –

उत्तर

11

3 महीने बाद मैंने समस्या का पुनरीक्षण किया और इस मुद्दे को हल किया।

कोड सही है।

मेरी त्रुटि यह थी कि मैं सबडोमेन का उपयोग करने के बजाय सर्वर के आईपी (wss: //xx.xx.xx.xx: 8081) का उपयोग कर क्लाइंट को कनेक्ट करने का प्रयास कर रहा था जिसके लिए प्रमाण पत्र और कुंजी जारी की गई थी (WSS: //secure.subdoma.in: 8081)।

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

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