質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Electron

Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Q&A

0回答

740閲覧

tunnel-sshモジュールを使って接続時、接続確立を知るには

TakamiChie

総合スコア59

Electron

Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

0グッド

0クリップ

投稿2022/06/10 08:12

前提

ElectronにてNodeJS向けのtunnel-sshというモジュールを使い、SSHトンネリングを行っています。

js

1const params = { 2 username: "…", 3 password: "…", 4 host: "…", 5  /* … */ 6} 7}; 8 tunnel({...params, ...{ 9 keepAlive: true, 10 }}, (error, serv) => { 11 if(error){ 12 result = `${error.name} ${error.message}`; 13 }else{ 14 result = ""; 15 server = serv; 16 server.on("connection", function(stream){ 17 /* 1 */ 18 console.log("connection created"); 19 }); 20 server.on("listening", function(){ 21 console.log("listening"); 22 }); 23 server.on("error", function(err){ 24 console.log("error occured"); 25 console.log(err); 26 }); 27 server.on("close", function(){ 28 log.debug("connection closed"); 29 console.log("connection closed"); 30 }); 31 } 32 });

現状上記コードで期待通り接続を行うことには成功しており、通信を行うことも出来る状態になっています。

実現したいこと

このたび、SSHでの接続を確立できたタイミングで、別の処理を行えるよう、接続確立のタイミングをイベントで補足したいと考えています。

ただ、サーバーのconnectionイベント(上記コード中の1)は接続が確立できたタイミングより前に実行されるようで、実はパラメータの接続先が過っていてタイムアウトしてしまった場合も、パスワードが間違っていてエラーとなった場合も、かならず実行されてしまいます。

それではとconnectionイベント内の引数streamのconnectイベントを参照してみました(下記コード2)が、接続確立後もコードが実行されませんでした。

js

1 server.on("connection", function(stream){ 2 console.log("connection created"); 3 /* 2 */ 4 stream.on("connect", () => { 5 console.log("connect"); 6 }); 7 });

リファレンスによるとほぼ同じタイミングで発生するとあるreadyイベントや、接続後に呼び出されるというlookupイベントも参照してみましたが、変わらず応答はありませんでした(なお、同じ記法でcloseイベントは参照できているようですので、記述自体に大きな誤りはないものと思われます)。

tunnel-sshではこのタイミングでの処理を行うことはできないのでしょうか?ご存じの方、ご教示頂けますと幸いです。

補足情報(FW/ツールのバージョンなど)

  • nodejs:18.3.0
  • Electron:18.2.3
  • tunnel-ssh:4.1.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問