2016-04-29 82 views
1

我流使用Debian杰西,阿帕奇,Node.js和受Binary.js一个mp3文件,它的工作原理采用http://ws://,但我不能让它工作使用https://wss:// ...服务器启动,但是我得到这个错误在浏览器:安全使用的WebSocket的node.js和binary.js

WebSocket连接到 'WSS://192.168.0.14:9000 /' 失败:错误 连接建立:网:: ERR_CONNECTION_CLOSED

这就是我想:

index.js

var https = require('https'); 
var fs = require('fs'); 

var hskey = fs.readFileSync('/etc/ssl/private/ssl-cert-snakeoil.key'); 
var hscert = fs.readFileSync('/etc/ssl/certs/ssl-cert-snakeoil.pem') 

var options = { 
    key: hskey, 
    cert: hscert 
}; 

httpsServer = https.createServer(options, function (req, res) { 
    res.writeHead(200); 
    res.end("Hi from HTTPS"); 
}).listen(8080); 


var BinaryServer = require('/home/john/node_modules/binaryjs').BinaryServer; 

var server = BinaryServer({ 
    port: 9000, 
    server: httpsServer 
}); 

// callback function 
server.on('connection', function(client) { 
    var file = fs.createReadStream('/var/www/html/mp3/audio.mp3'); 
    client.send(file); 
}); 

的index.html

<!doctype html> 
<html> 
    <head> 
     <title>Stream audio</title> 
     <meta charset="utf-8"> 
     <script src="https://cdn.jsdelivr.net/binaryjs/0.2.1/binary.min.js"></script> 
     <script> 
     var client = new BinaryClient('wss://192.168.0.14:9000'); 

     client.on('stream', function(stream, meta){ 

      var parts = []; 

      stream.on('data', function(data){ 
       parts.push(data); 
      }); 

      stream.on('end', function(){ 
       var music = document.createElement('audio'); 
       music.src = (window.URL || window.webkitURL).createObjectURL(new Blob(parts)); 
       music.controls = 'controls'; 
       music.preload = ''; 
       document.body.appendChild(music); 
      }); 

     }); 
     </script> 
    </head> 


    <body> 



    </body> 
</html> 

回答

0

简单地终止与Nginx的代理的SSL,并通过所有要求后端的NodeJS。

这是Nginx的配置片断:

 location /ws { 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_set_header X-NginX-Proxy true; 
     proxy_redirect off; 
     proxy_pass http://127.0.0.1:9000; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
     proxy_buffers 8 32k; 
     proxy_buffer_size 64k; 
     break; 
    } 
+0

我使用的Apache – neoDev

+0

我怎样才能为Apache做到这一点? – neoDev