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コードを削除すると問題なく動作しますが、SSLコードを削除すると、http://domain.example/socket.io/1/?t=1309967919512
HTTPS を試行していないため、失敗することに注意してください。
このアプリケーションのターゲット ブラウザは Chrome なので、Chrome でテストしています。
簡単な質問であれば申し訳ありません。私は node/socket.io の初心者です。
ベストアンサー1
最初の接続には安全な URL を使用します。つまり、「http://」の代わりに「https://」を使用します。WebSocket トランスポートを選択した場合、Socket.IO は WebSocket 接続にも自動的に「wss://」(SSL) を使用します。
アップデート:
「secure」オプションを使用して接続を作成することもできます。
var socket = io.connect('https://localhost', {secure: true});