Node.js、套接字、io 和 HTTPS

标签 node.js 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');
});

如果我在服务器上运行此 Node 脚本,我可以通过网页的本地主机副本进行连接。但是,我无法从服务器上托管的副本进行连接,因为它是通过 HTTPS 提供的。我收到错误:

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 客户端 代码:

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

关于Node.js、套接字、io 和 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45788235/

相关文章:

javascript - 在 3000 端口上使用 https 的 Node.js socket.io

java - 在 Java 中通过 HTTP 代理创建 TLS 连接

javascript - 为什么 disqus 评论不通过 h​​ttps 加载?

android - 不受信任的证书错误和 android 上的 httpclient

node.js - 有没有办法将 Mongoose 中间件与查询构建器一起使用?

git - Heroku + Github 部署策略

python - 尝试使用 aiohttp 构建代理

node.js - NPM 从 GCP App Engine 中的 Google Cloud Repository 安装

Node.js session

javascript - NodeJS 区别 Object.keys(array).length 和 array.length