[英]Socket.io not working with https (Let's Encrypt)
我正在使用ASP.NET CORE 2.0建立電子商務。 電子商務具有使用nodejs和程序包socket.io構建的聊天室。 socket.io服務器在服務器上是遠程的。 當我在本地使用運行Visual Studio調試器的Socket.io客戶端訪問遠程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');
});
但是,當我發布網站並獲得由Nginx / kestrel提供的socket.io客戶端的html頁面時,我收到一條錯誤消息,提示我正在混合某些東西,我沒有注意該錯誤消息,因為我記得我在服務器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 });
我使用“讓我們加密”來啟用https連接,我使用Nginx作為Kestrel的代理,我在Ubuntu 17上使用ufw。
我昨天收到此錯誤。 我什至沒有晚上睡覺。 但是我知道了。 我發送了這樣的證書。
var app = require('express')();
var app2 = require('express')();
var fs = require('fs');
var options = {
key: fs.readFileSync('/etc/letsencrypt/live/example.com/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/example.com/cert.pem'),
ca: fs.readFileSync('/etc/letsencrypt/live/example.com/chain.pem')
};
var http = require('https').Server(options, app);
var http2 = require('https').Server(app2);
var io = require('socket.io')(http);
app.get('/', function (req, res) {
res.send('server is running');
});
app2.get('/', function (req, res) {
res.send('admin area');
});
我不希望任何人通過挫折感。 希望我能幫助別人。
您需要為客戶端和服務器添加傳輸類型
服務器
var io = require('socket.io')(http); io.set('transports', ['websocket']);
客戶
myIo = io('https://www.example.com.br:3009', { transports: ['websocket'], upgrade: false }, { 'force new connection': true });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.