[ 新規に投稿する ]

空いてるポートを取得できる関数の提案No.10574
こみやんま さん 25/02/20 16:49 [ コメントを投稿する ]
  「空きポート」を取得できる getFreePort() のような関数を秀丸マクロに標準搭載する提案です。

これは、秀丸の個別ブラウザ枠やレンダリング枠でSPA的なページを表示する際に、
http://localhost:port で簡易サーバーを立てるニーズに応えるものです。

長くなるので、

https://github.com/komiyamma/hm_free_port

に提示しました。


意味的には英語圏の人は getAvailablePort とかの方がいいのかもしれないですが、
日本人だと「Available」は相当高確率で綴ミスするのでFreeの方がいいかとw

[ ]
RE:10574 空いてるポートを取得できる関数の提案No.10575
秀丸担当 さん 25/02/21 09:35 [ コメントを投稿する ]
  ご意見ありがとうございます。
他のプログラムがサーバーを立てるために秀丸エディタが空きポートを探すということだと思いますが、そこまではやりすぎだと思うので、やめておこうと思います。
[ ]
RE:10575 http://localhost作戦No.10576
こみやんま さん 25/02/22 23:43 [ コメントを投稿する ]
 
http://localhost作戦 の もう一つの代案としては、
「個別ブラウザ枠」や「レンダリング枠」(特に個別ブラウザ枠)向けに、

> WebView2の「SetVirtualHostNameToFolderMapping」

の機能を使うというものです。
(westernさんも以前話題に出していたと思います)

これは結構強力で、事実上「httpサーバーを立てること無く」
「特定のフォルダーをrootフォルダとみなしてhttpサーバーを一時的に立てたかの如き」
効果を得られます。

しかもサーバーが実際に立っているわけではないので秀丸外部からはアクセスできません。
(秀丸マクロのcreateHttpServerよりよっぽど安全ですw)

そのURLでアクセスできるのは、あくまでも該当の「SetVirtualHostNameToFolderMapping」の設定を行った
WebView2インスタンスだけです。

実装側。WebView2インスタンスの「CoreWebView2のSetVirtualHostNameToFolderMapping」の簡易例
```C# C++でも類似。
webView = new WebView2();
await webView.EnsureCoreWebView2Async(null);
webView.CoreWebView2.SetVirtualHostNameToFolderMapping("localhost", "C:\\あいうえお", CoreWebView2HostResourceAccessKind.Allow);
webView.Source = new Uri("https://localhost/index.html");
```

(上の例は「https://localhost/***」とアクセスされると該当のWebview2インスタンスについては
「httpsプロトコル」で"C:\あいうえお\***"にアクセスする)


## browserpanecommandやrenderpanecommand実装例

browserpanecommand({
   virtualhost: "localhost",
   foldermap:"C:\\あいうえお", // virtualhost が有効な場合にのみ有効。
   url: "http://localhost/index.html",  // C:\\あいうえお\\index.html を httpプロトコルで表示する。
   show: 1
}

browserpanecommand({
   virtualhost: "hidemaruo.net", // このようなサイトは無いが、あるかないかは無関係
   foldermap:"C:\\marumaru", // 
   url: "http://hidemaruo.net/index.html", C:\\marumaru\\index.html にアクセス
   show: 1
}

[ ]
RE:10576 http://localhost作戦No.10593
秀丸担当 さん 25/02/25 17:52 [ コメントを投稿する ]
  そういう方法もあるのですね。
前の話題で試したような気がします。
これ以上機能を増やしたくないというものあります。
ご意見参考にさせていただきます。
[ ]

[ 新規に投稿する ]