我正在尝试使用我的SSL证书运行socket.io,但是它将无法连接。
我基于聊天示例创建代码:
var https = require('https');
var fs = require('fs');
/**
* Bootstrap app.
*/
var sys = require('sys')
require.paths.unshift(__dirname + '/../../lib/');
/**
* Module dependencies.
*/
var express = require('express')
, stylus = require('stylus')
, nib = require('nib')
, sio = require('socket.io');
/**
* App.
*/
var privateKey = fs.readFileSync('../key').toString();
var certificate = fs.readFileSync('../crt').toString();
var ca = fs.readFileSync('../intermediate.crt').toString();
var app = express.createServer({key:privateKey,cert:certificate,ca:ca });
/**
* App configuration.
*/
...
/**
* App routes.
*/
app.get('/', function (req, res) {
res.render('index', { layout: false });
});
/**
* App listen.
*/
app.listen(443, function () {
var addr = app.address();
console.log(' app listening on http://' + addr.address + ':' + addr.port);
});
/**
* Socket.IO server (single process only)
*/
var io = sio.listen(app,{key:privateKey,cert:certificate,ca:ca});
...
如果我删除SSL代码,它运行正常,但是与此同时,我收到了对http://domain.com/socket.io/1/?t=1309967919512的请求
请注意,它没有尝试使用https,这会导致它失败。
我正在测试chrome,因为它是该应用程序的目标浏览器。
抱歉,这是一个简单的问题,我是node / socket.io新手。
谢谢!
对于企业应用程序,应注意,您不应在代码中处理https。应该通过IIS或nginx自动升级。该应用程序不应该知道使用了哪些协议。