【发布时间】:2011-09-29 18:41:45
【问题描述】:
我正在尝试使用我的 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 新手。
谢谢!
【问题讨论】:
-
您的客户端是否正在尝试连接到 'wss://' 前缀的 URI。
-
不,它没有到达那里,它向domain.com/socket.io/1/?t=1309967919512发出请求然后死掉。
-
您如何指定要连接的地址? “domain.com”听起来像是 socket.io 客户端库中的占位符。您可以发布您用于连接的客户端 Javascript 代码吗?
-
项目在github上:github.com/BCCasino/BCCasino
-
基本上是因为它的 node.js socket.io 神奇地处理了客户端的东西,你所要做的就是运行 socket.connect
标签: ssl node.js https websocket socket.io