通过HTTPs的WebRTC问题

elt*_*910 2 node.js webrtc

我创建了一个简单的WebRTC应用程序,可以很好地测试本地主机。但是,除非您有安全的连接,否则WEBRTC不会有太大用处,因为除非您具有HTTP,否则浏览器现在将不会运行GetUserMedia,因此我正在“尝试”对其进行升级,以用于SSL-TLS。下面是我的两个应用程序并排的屏幕截图,一个安全(不起作用),另一个不安全(起作用

在此处输入图片说明

如您在上面看到的,本地主机“连接”,而HTTP“无法建立连接”。我是SSL新手,所以这可能很简单。请多加关注。

我确实知道我的Javascript HTTPS服务器已安全连接,请参见下图在此处输入图片说明

以下是我的代码段。任何帮助将不胜感激:

SSL客户端-Client.JS

var connection = new WebSocket('wss://localhost:8443'),

name = "";
Run Code Online (Sandbox Code Playgroud)

非安全客户端-Client.JS

var connection = new WebSocket('ws://localhost:8888'),

    name = "";
Run Code Online (Sandbox Code Playgroud)

非安全JS服务器-index.JS

var WebSocketServer = require('ws').Server,

wss = new WebSocketServer({ port: 8888 }),

users = {};
wss.on('connection', function (connection) {
connection.on('message', function (message) .....
Run Code Online (Sandbox Code Playgroud)

安全JS服务器-SSLindex.JS

 Var https = require('https'),

fs = require('fs'),

 express = require('express'),

  app = express();


var wss = https.createServer({
key: fs.readFileSync('server.key'),

cert: fs.readFileSync('server.crt'),

ca: fs.readFileSync('ca.crt'),

requestCert: true,

rejectUnauthorized: false
 }, app).listen('8443', function() {
console.log("Secure Express server listening on port 8443");
});

 app.use("/", function(req, res, next) 
{
 res.send("index.js is working!");

  });
Run Code Online (Sandbox Code Playgroud)

Aja*_*jay 5

为方便开发人员,chrome将被localhost视为安全来源。
如果您使用的是http:// localhost或ws:// localhost,则不涉及SSL,因此它在右侧的屏幕截图中工作正常。
但是对于httpswss,浏览器将验证SSL证书授权。

解决wss:// localhost:8443 /的websocket连接问题

临时解决方法:打开https:// localhost:8443 / url,并通过单击Adavced =>允许浏览器例外继续
实际解决方案:将域名分配给您的节点服务器(node.kali2016.com),并使用授权的SSL证书配置节点。然后替换
var connection = new WebSocket('wss://localhost:8443')

var connection = new WebSocket('wss://yourdomainname:8443')