在ssl上遇到问题

时间:2018-03-28 23:43:39

标签: javascript node.js websocket

我无法将我的ws连接转换为wss。我的代码上运行了两种类型的服务器。首先,我保留一个检索实时数据包的网络服务器。然后,当客户端希望查看此数据时,我有一个Web套接字服务器将其发送给它们。

我的代码如下:

var net = require("net");
var https = require("https");
var WebSocketServer = require('ws').Server;

var wss = new WebSocketServer({
    ssl: true,
    port: 8082,
    ssl_key: fs.readFileSync('key.pem'),
    ssl_cert: fs.readFileSync('cert.pem')
});
var servercsv = net.createServer();
servercsv.listen(9001);

servercsv.on('connection', function(socket){
  fetchlivedata();
});

wss.on('connection', function(ws){
    ws.on('message', function(message){
        ws.send(thelivedata());
    });
});

为了测试这个,我有这个模拟客户端页面,其编写如下:

<p id="muscovy"></p>
<script>
var muscovy = document.getElementById('muscovy');
    var ws = new WebSocket('ws://localhost:8082');
    var wes = new WebSocket('wss://mywebsite.com:8082');
    // event emmited when connected
    wes.onopen = function (){
        // sending a send event to websocket server
        wes.send("Beans");
    }
    // event emmited when receiving message 
    wes.onmessage = function(ev){
        //let musco = JSON.parse(ev.data);//
        //muscovy.textContent = musco[0][1];//
        let misho = ev.data;
    }
</script>

当我运行此测试时,我收到以下错误:

Error in connection establishment: net::ERR_CONNECTION_REFUSED

问题很可能是我的ssl证书的实施。

我还应该指出,我通过将原始证书(crt)转换为pem来遵循其他人的建议。我通过更改扩展名来完成此操作。我被告知,因为我的证书的文本以---Begin etc---开头,所以可以通过这样做将其重新格式化为pem。

很高兴知道这是不正确的。我倾向于相信我的网络套接字服务器代码是这里的问题。

编辑:

我还想提一下,我的代码适用于常规的Web套接字。如果我喜欢的话:

var wss = new WebSocketServer({
    port: 8082
});
var servercsv = net.createServer();
servercsv.listen(9001);

然后一切都按预期工作。但仅限于非https环境。

0 个答案:

没有答案