node.js、socket.io で SSL を使用する 質問する

node.js、socket.io で SSL を使用する 質問する

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});

おすすめ記事