2012-05-09 2 views
7

Wie installiere ich ein https/ssl Zertifikat (und Schlüssel) in sockjs (läuft auf nodejs)?SSL mit sockjs einrichten

Ich führe gerade die grundlegendste Einrichtung, das ist das "Echo" Beispiel Setup. Es folgt:

var http = require('http'); 
var sockjs = require('sockjs'); 
var node_static = require('node-static'); 

// 1. Echo sockjs server 
var sockjs_opts = {sockjs_url: "http://cdn.sockjs.org/sockjs-0.3.min.js"}; 

var sockjs_echo = sockjs.createServer(sockjs_opts); 
sockjs_echo.on('connection', function(conn) { 
    conn.on('data', function(message) { 
     conn.write(message); 
    }); 
}); 

// 2. Static files server 
var static_directory = new node_static.Server(__dirname); 

// 3. Usual http stuff 
var server = http.createServer(); 
server.addListener('request', function(req, res) { 
    static_directory.serve(req, res); 
}); 
server.addListener('upgrade', function(req,res){ 
    res.end(); 
}); 

sockjs_echo.installHandlers(server, {prefix:'/echo'}); 

console.log(' [*] Listening on 0.0.0.0:9999'); 
server.listen(9999, '0.0.0.0'); 

Vielen Dank!

Antwort

10

Okay, habe ich es, indem Sie den Code zu arbeiten:

var http = require('https'); 
var sockjs = require('sockjs'); 
var fs = require("fs"); 

var options = { 
    key: fs.readFileSync('ssl.key'), 
    cert: fs.readFileSync('ssl.crt') 
}; 

var echo = sockjs.createServer(); 
echo.on('connection', function(conn) { 
    conn.on('data', function(message) { 
     conn.write(message); 
    }); 
    conn.on('close', function() {}); 
}); 

var server = http.createServer(options); 
echo.installHandlers(server, {prefix:'/echo'}); 
server.listen(9999, '0.0.0.0'); 
+1

Wenn Sie ein selbst signiertes Zertifikat verwenden (zum Beispiel für die lokale Entwicklung) dann müssen Sie die Sicherheitsausnahme bestätigen SSL oder die Websockets werden nicht verbunden. Gehen Sie einfach zu "http: // localhost: 9999/info" (oder dem von Ihnen verwendeten Host/Port) und folgen Sie den Anweisungen Ihres Browsers. – robbrit

+3

Gibt es eine Idee, wie dies bei Verwendung von [sockjs-client-node] (https://github.com/sockjs/sockjs-client-node) programmgesteuert durchgeführt wird? –