से कनेक्ट नहीं हो सकता है मेरे पास node.js ऐप है, जो सॉकेट.आईओ का उपयोग करता है। यह http पर ठीक काम करता है, लेकिन जब https के माध्यम से सॉकेट से कनेक्ट करने का प्रयास करता है - कुछ भी नहीं होता है। , जैसा कि मैंने कहा सब कुछ http पर ठीक काम करता हैसॉकेट.आईओ https
var secureConnection = false;
var port = 8899;
if (window.location.protocol === 'https:') {
port = 8895;
secureConnection = true;
}
var socket = io.connect('domain.org', {port: port, secure: secureConnection});
:
var fs = require('fs');
var ioHttp = require('socket.io').listen(8899, {
'flash policy port': -1
});
initSocket(ioHttp);
var ioHttps = require('socket.io').listen(8895, {
key: fs.readFileSync('/path/to/file/file.key'),
cert: fs.readFileSync('/path/to/file/file.crt'),
ca: [
fs.readFileSync('/path/to/file/sub.class1.server.ca.pem'),
fs.readFileSync('/path/to/file/ca.pem')
],
'flash policy port': -1
});
initSocket(ioHttps);
और initSocket
समारोह:
function initSocket(io) {
io.enable('browser client minification');
io.enable('browser client etag');
io.enable('browser client gzip');
io.set('transports', [
'websocket',
'htmlfile',
'flashsocket',
'jsonp-polling'
]);
io.sockets.on('connection', function (client) {
//the connnection is handled here
});
}
ग्राहक इस तरह कनेक्ट
यहाँ कोड का कुछ हिस्सा है लेकिन https पर कनेक्ट करने से मुझे "कनेक्शन बाधित हो गया" देता है। मैं क्या गलत कर रहा हूं?
क्या आप स्वयं साइन साइन कर सकते हैं या socket.io ब्राउज़र में सामान्य HTTP की तरह व्यवहार करते हैं जहां यह प्रमाणपत्र जांचता है और आपको चेतावनी देता है? – Titan
अरे, आपको server.key, server.crt और ca.crt कहां मिलते हैं? क्या यह स्वयं बनाया गया है? अगर यह स्वयं बनाया गया तो क्या यह उत्पादन पर काम करेगा? –
@GreenGiant अनुरोध के लिए देखो देखें और अस्वीकार करें [दस्तावेज़ीकरण] में विकल्प के अंदर अनधिकृत (http://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener) – user568109