web-dev-qa-db-ja.com

ソケットIO Apachesslサーバーと組み合わせる

Ssl証明書を持つApacheサーバーと一緒にポート8000​​でNodeJSサーバーを実行しようとしています。仮想ホストとproxypassを使用して、ApacheWebサイトから/ nodeパスを介してNodeJSサーバーにリンクしています。

私が正しい問題は、Expressプラグインで提供されるページをロードできるが、SocketIO接続からのポーリングが失敗するように見えることです。私はたくさんのことを試しましたが、それを機能させることができないようです。

聞くようにクライアントを設定した場合

var socket = io.connect('example.com:8000', {secure: false});

私のコンソールはこれに沿って何かを示しています:

socket.io-1.3.7.js:2 GET https://example.com:8000/socket.io/?EIO=3&transport=polling&t=1451044647116-0 net::ERR_CONNECTION_CLOSED

また、NodeJSサーバーでSSLを使用する方法を知っていますが、Apacheサーバーでポート443を介してリッスンしているため、機能しないと思います。

これが可能かどうか、および/またはこれを設定する方法を知っている人はいますか?

編集:私がUbuntu 14.04x64で実行していることを言及するのを忘れました

1
Crecket

私はついにそれを理解しました。

サーバー側nodeJSアプリで次のコードを実行します。

var options = {
    key: fs.readFileSync('/home/certificates.key'),
    cert: fs.readFileSync('/home/certificates.crt'),
    requestCert: true
};
var server = require('https').createServer(options, app);
var io = require('socket.io').listen(server);
server.listen(8000);
console.log('Server started at port: 8000');

クライアント側私は、接続を確立するために以下を使用するだけのApacheサーバーを使用してページを提供します。

var socket = io.connect('example.com:8000', {secure: true});

この方法で8000のようなポート上でSSLを実行できることに気づきませんでした。

1
Crecket