Korzystam z modułu eniaros/ws dla NodeJS do komunikowania się w czasie rzeczywistym między aplikacją iOS a serwerem NodeJS za pomocą gniazd internetowych.Jak skonfigurować moduł einaros/ws dla NodeJS, aby akceptował połączenia wss (secure ws)?
Aplikacja działa dobrze, ale teraz muszę zabezpieczyć komunikację między serwerem a aplikacją iOS za pomocą wss. Mam certyfikat Szybka SSL i klucz i używam następujący kod na serwerze:
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 });
Kod jest dość dużo Przykład podany w pliku ws/examples/ssl.js na GitHub, ale z jakiegoś powodu/serwer ws NodeJS nie akceptuje żadnych połączeń wss.
Używam poprawnej ścieżki wss: // REMOTE_SERVER_IP: 8081/i testuję z http://www.websocket.org/echo.html.
Szukałem daleko i szeroko, ale nie wydaje się być aktualnym samouczkiem, jak skonfigurować bezpieczne wss przy użyciu eniaros/ws.
Ten fragment kodu jest stosunkowo duży, dlatego chciałbym podkreślić, że kluczem do tego jest przekazywanie instancji 'https' do' new WebSocketServer() 'zamiast tylko' {port: 80} '. [Więcej informacji tutaj] (http://stackoverflow.com/q/31338927/722036). Mam nadzieję że to pomoże. –