我正在尝试使用我的 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.example/socket.io/1/?t=1309967919512
http://domain.example/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});