首页 文章

Node.js,socket,io和HTTPS

提问于
浏览
2

我正在制作一个白板应用程序:

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');
});

如果我在服务器上运行此节点脚本,我可以通过我的网页的localhost副本进行连接 . 但是,由于它是通过HTTPS提供的,因此无法从我服务器上托管的副本进行连接 . 我收到错误:

polling-xhr.js:264混合内容:页面位于:****是通过HTTPS加载的,但请求了一个不安全的XMLHttpRequest endpoints '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});

1 回答

  • 1

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

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

相关问题