2016-12-30 7 views
1

ソケットを介してバックエンド間で通信する必要があります。送信側で私は爆発するだけです。受信側では、ソケット接続が切断されたときにソケットが再接続されないときに、セイルソケットは再接続されません

const socketIOClient = require('socket.io-client'); 
const sailsIOClient = require('sails.io.js'); 
const io = sailsIOClient(socketIOClient); 
io.sails.url = "http://route.to.my.backend"; 
io.sails.initialConnectionHeaders = {secret: process.env.SOCKETSECRET}; 

が返されます。私はそれを試しました:

io.sails.forceNew = true; 

しかし、それは動作しません。どのように再接続することができますか?

答えて

2

これは古い質問ですが、私には文書化されていない解決策があります(その他の回答はありませんでした)ので、今後の参考に転記しています。

は問題:

ソリューションをsails.io.jsノードモジュールを使用している間、私のSailsSocketインスタンスは再接続を試みません:あなたのソケットの切断は、trueとに上記のプロパティを設定すると、手動で、具体的にtrue

io.socket._raw.io._reconnectionを設定しましたソケットは自動的に再接続を試みます。

io.socket.on('disconnect', function() { 
    io.socket._raw.io._reconnection = true; 
}); 

あなたは、._rawで基礎となるsocket.ioソケットクライアントにアクセス.ioとソケットのマネージャを取得し、trueに別の[擬似]プライベート変数、._reconnectionを設定しなければならないので、それはかなり醜いです。

"reconnctingではない"この問題は、ノード内でsails.io.jsを使用してのみ存在し、ブラウザの実装は正常に機能することを強調しておきます。私は非接続の問題を取り除くために管理@ContinuousLoadソリューションを使用して sails 0.11.0sails.io.js node SDK 1.1.12node 6.11.2

1

:でテスト

io.socket._raw.io._reconnectionAttempts = Infinity;

私は永遠に再接続を試みることができますこの方法:私はまた、別の変数を設定します。

しかし、なぜそれがそのように動作するのかわかりません。 https://github.com/socketio/socket.io-client/blob/master/docs/API.md#new-managerurl-options

我々が本当に「reconnectionAttempts」と「再接続」を変更する必要があるようです:私はsails.io.jsコード、https://github.com/balderdashy/sails.io.js/blob/master/dist/sails.io.jsとソケットio.client、マネージャの特に一部を研究してきましたsails.io.jsコードに記載されているように、ソケットが接続されていないときに変更する必要があります。

//接続オプションを設定すると、ソケットが切断されたときにのみ変更できるようになります。 var _opts = {};

私はプライベートオブジェクトのプロパティを作成する必要があるのは本当にわかりません。しかし、 "_"部分がないとテストされません。どうやら、これはこの問題に対する答えがあるインターネットの唯一の部分なので、あなたがそれを理解したことをうれしく思います。@ContinuousLoad!どうもありがとう!

+0

あなたの調査に感謝します!私はここで動きを見てうれしいです。私はチャンスを得ると、この問題を[balderdashy/sails.io.js](https://github.com/balderdashy/sails.io.js?files=1)に持っていくつもりです。 – ContinuousLoad

関連する問題