Node.js,套接字,io和HTTPS

我在制作白板应用程序:

var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); io.on('connect', function(socket) { socket.on('join', function(data) { socket.join(data.room); console.log(data.room); }); socket.on('drawing', function(data) { console.log(data); io.sockets.in(data.room).emit("senddraw", data); }); socket.on('writetext', function(data) { console.log(data); io.sockets.in(data.room).emit("senddraw", data); }); socket.on('action', function(data) { console.log(data); io.sockets.in(data.room).emit("action", data); }); }); http.listen(8080, function() { console.log('listening on localhost:8080'); }); 

如果我在我的服务器上运行这个节点脚本,我可以通过我的网页的本地主机副本连接。 但是,由于通过HTTPS提供服务,因此我无法从托pipe在我的服务器上的副本进行连接。 我得到的错误:

polling-xhr.js:264混合内容:页面:*****通过HTTPS加载,但请求不安全的XMLHttpRequest端点http:// 。* :8080 / socket.io /?EIO = 3&transport = polling&t = Lu2NoGL'。 此请求已被阻止; 内容必须通过HTTPS提供。

我怎样才能解决这个问题,而不禁用我的服务器上的ssl?

客户有相当于:

  //var socket = io.connect("http://localhost:8080"); var socket = io.connect("http://**.***.***.**:8080"); socket.on("connect", function(data) { socket.emit("join", {room : "@roomid"}); }); 

在绘画事件上:

 socket.emit("drawing", {x0 : x0, y0 : y0, x1 : x1, y1: y1, current : current, room : "@roomid"}); 

哪些挑选:

 socket.on("drawing", function(data) {do blah}); 

您需要通过连接到/而不是http://...*:8080更改您的网页的JavaScript中的socket.io client代码:

 var socket = io.connect('/');