【发布时间】:2018-10-20 20:38:48
【问题描述】:
我正在使用 ASP.NET CORE 2.0 构建电子商务。电子商务有一个使用 nodejs 和包 socket.io 构建的聊天。 socket.io 服务器 在服务器上是远程。当我在本地使用 Socket.io 客户端,运行 Visual Studio 调试器,访问远程 socket.io 时,一切正常。
代码是这样的,注意我没有使用https
var app2 = require('express')();
var http = require('http').Server(app);
var http2 = require('http').Server(app2);
var io = require('socket.io')(http);
http.listen(3009, function () {
console.log('listening on port 3009');
});
http2.listen(3011, function () {
console.log('listening on port 3011');
});
但是当我发布我的网站并获取 html 页面以及由 Nginx/kestrel 提供的 socket.io 客户端时,我收到一条错误消息,说我正在混合一些东西,我没有注意错误消息,因为我记得我在服务器 socket.io 和客户端上使用了 http。所以我更改了 socket.io 服务器和客户端,但现在我无法连接。
我的修改是这样的:
var app2 = require('express')();
var http = require('https').Server(app);
var http2 = require('https').Server(app2);
var io = require('socket.io')(http);
http.listen(3009, function () {
console.log('listening on port 3009');
});
http2.listen(3011, function () {
console.log('listening on port 3011');
});
客户
myIo = io('https://www.example.com.br:3009', { secure: true, reconnect: true, rejectUnauthorized: false });
我使用 Let's encrypt 来启用 https 连接,我使用 Nginx 作为 Kestrel 的代理,我在 Ubuntu 17 上使用 ufw。
【问题讨论】:
标签: node.js nginx https socket.io lets-encrypt