首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用node.js和binary.js安全websocket

使用node.js和binary.js安全websocket
EN

Stack Overflow用户
提问于 2016-04-29 18:57:45
回答 1查看 727关注 0票数 1

我正在使用Debian,Apache,Node.js和Binary.js流一个Node.js文件,它使用http://ws://工作,但是我不能让它使用https://wss://.服务器启动,但我在浏览器中得到这个错误:

连接到'wss://192.168.0.14:9000/‘的WebSocket连接失败:连接建立中的错误: net::ERR_CONNECTION_CLOSED

这就是我想要做的:

index.js

代码语言:javascript
复制
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

代码语言:javascript
复制
<!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>
EN

回答 1

Stack Overflow用户

发布于 2016-04-29 19:09:10

只需使用Nginx代理终止SSL,并将所有请求传递给NodeJS后端。

这是Nginx配置的片段:

代码语言:javascript
复制
     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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36945634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档