我正在尝试使用我的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新手。
谢谢!
使用安全的URL进行初始连接,即使用“ https://”代替“ http://”。如果选择了WebSocket传输,则Socket.IO也应自动将“ wss://”(SSL)用于WebSocket连接。
更新 :
您也可以尝试使用“安全”选项创建连接:
var socket = io.connect('https://localhost', {secure: true});