前提
ElectronにてNodeJS向けのtunnel-sshというモジュールを使い、SSHトンネリングを行っています。
js
const params = { username: "…", password: "…", host: "…", /* … */}}; tunnel({...params, ...{ keepAlive: true, }}, (error, serv) => { if(error){ result = `${error.name} ${error.message}`; }else{ result = ""; server = serv; server.on("connection", function(stream){ /* 1 */ console.log("connection created"); }); server.on("listening", function(){ console.log("listening"); }); server.on("error", function(err){ console.log("error occured"); console.log(err); }); server.on("close", function(){ log.debug("connection closed"); console.log("connection closed"); }); } });
現状上記コードで期待通り接続を行うことには成功しており、通信を行うことも出来る状態になっています。
実現したいこと
このたび、SSHでの接続を確立できたタイミングで、別の処理を行えるよう、接続確立のタイミングをイベントで補足したいと考えています。
ただ、サーバーのconnectionイベント(上記コード中の1)は接続が確立できたタイミングより前に実行されるようで、実はパラメータの接続先が過っていてタイムアウトしてしまった場合も、パスワードが間違っていてエラーとなった場合も、かならず実行されてしまいます。
それではとconnectionイベント内の引数streamのconnectイベントを参照してみました(下記コード2)が、接続確立後もコードが実行されませんでした。
js
server.on("connection", function(stream){ console.log("connection created"); /* 2 */ stream.on("connect", () => { console.log("connect"); }); });
リファレンスによるとほぼ同じタイミングで発生するとあるreadyイベントや、接続後に呼び出されるというlookupイベントも参照してみましたが、変わらず応答はありませんでした(なお、同じ記法でcloseイベントは参照できているようですので、記述自体に大きな誤りはないものと思われます)。
tunnel-sshではこのタイミングでの処理を行うことはできないのでしょうか?ご存じの方、ご教示頂けますと幸いです。
補足情報(FW/ツールのバージョンなど)
- nodejs:18.3.0
- Electron:18.2.3
- tunnel-ssh:4.1.6
0 コメント