我試圖運行nodejs應用程序來處理我的PHP項目。問題是我認爲在服務器中啓用SSL。nodejs無法使用SSL
我有兩個文件,我在我的根目錄中找到SSL安裝後:domain.com.csr和domain.com.key,我試圖在創建https服務器時將它們連接到連接,但沒有爲我工作。
到目前爲止,我有這樣的代碼:
var socket = require('socket.io');
var express = require('express');
var http = require('http');
var app = express();
var server = http.createServer(app);
var io = socket.listen(server);
app.get('/test', function(req, res) {
res.send('hello world');
console.log('visited test')
});
io.sockets.on('connection', function (client) {
console.log("New client !");
client.on('message', function (data) {
console.log('Message received ' + data.name + ":" + data.message);
io.sockets.emit('message', {name: data.name, message: data.message});
});
});
server.listen(8080, function() {
console.log('listen me on: 8080');
});
和它工作得很好,當我試圖訪問http://ip:8080/test所以它意味着節點服務器工作正常,但是當我嘗試創建我的觀點套接字連接文件var socket = io.connect('http://ip:8080');
它給了我錯誤:
The page at 'https://www.domain.com/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://ip:8080/socket.io/?EIO=3&transport=polling&t=1446818946199-0'. This request has been blocked; the content must be served over HTTPS.
所以這個問題是不夠清楚,但如何處理呢? 也我試過這個連接:
但結果是404 GET錯誤。如何處理它?
更新
現在的代碼部分我應該使用,但不知道如何讓現有的SSL證書的服務器中。
var socket = require('socket.io');
var express = require('express');
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('path/to/key.pem'), // dont have
cert: fs.readFileSync('path/to/cert.cert') // dont have
};
var app = express();
var server = https.createServer(options, app);
var io = socket.listen(server);
app.get('/test', function(req, res) {
res.send('hello world');
console.log('visited test')
});
io.sockets.on('connection', function (client) {
console.log("New client !");
client.on('message', function (data) {
console.log('Message received ' + data.name + ":" + data.message);
io.sockets.emit('message', {name: data.name, message: data.message});
});
});
server.listen(443, function() {
console.log('listen me on: 443');
});
.csr不是證書。這是證書請求。另外,你的代碼不會顯示你在任何地方創建你的「https」服務器。 – Joe
現在很明顯,這就是我要求的社區。他們不工作的原因是沒有生成.pem和.cert文件。代碼被粘貼到現在。 –
您需要先獲得證書。 CSR不會幫助。然後,您需要使用具有'https'類的cert + key而不是'http'來設置您的偵聽器。 – Joe