2016-10-04 4 views
1

私はマシン側でクライアント側のGolangアプリケーションを実行しています。私はブラウザも開いており、そのブラウザには私のWebアプリケーション(Golangアプリケーションとは完全に別)を実行するタブがあるかもしれません。Goアプリケーションから特定のブラウザタブを更新する最も簡単な方法は何ですか?

Golangアプリから、ブラウザのタブをプログラムでリフレッシュしたいと思います(可能であれば、それを前面に表示することも重要です)。

私はすでに多くのことを研究しており、ブラウザとのやりとりだけでは不可能であると結論付けました。特定のプラットフォーム(特にクロスプラットフォームとクロスブラウザ)タブをクリックします。

私はGolangアプリケーションが通信できるウェブサイト上でカスタムJSコードを実行し、タブのリフレッシュをトリガーする必要があると思います。

これを行う最も簡単な方法は何ですか?

(私はちょうど、私がlivereload.jslrserverを見ていたが、これらはすべて私たちが見て、自動的に任意の変化にリロードしたいコンテンツのフォルダがあることが前提で始まる。しかし、私はそれを望んでいませんまた、このGolangアプリはウェブサイトをホストしていないので、別個のクライアント側アプリケーションです)。

+0

サーバー側のイベントでページを更新しますか? –

+0

いいえ、私はこのストーリーにウェブサーバーを含めたくありません。 (サーバから来るサイトではないと想像してみてください。ちょうどローカル静的なhtml + jsかもしれません)ブラウザと同じマシン上で動作するGolangアプリケーションからブラウザタブをプログラムでリフレッシュしたいと思います。 –

+3

できません。あなたができることは、ブラウザのjavascriptでサーバーのエンドポイントをポーリングするか、またはブラウザのjavascriptでその決定自体を行い、これらのテクニックの1つを使用することです。http://stackoverflow.com/questions/5404839/how-can-i-refresh-a -page-with-jquery/5404869#5404869 – Plato

答えて

0

いくつかのコメントで示唆されているように、私たちが接続できるAPIはないようですGolangのブラウザ、タブのリストを照会したり、特定のページをリフレッシュしたりすることができます(少なくともクロスブラウザとクロスプラットフォームの方法ではありません)。

可能なアプローチの1つは、Golangで小さなWebSocketエンドポイントをホストし、更新したいサイトからWebSocketエンドポイントに接続することです。その後、サイトをリロードするたびにWS接続を介してメッセージを送信し、メッセージを受け取ったときにJavaScriptコールlocation.reload()を送信します。

blog postにすべての詳細を記述し、完全な動作例をGitHubにアップロードしました。

関連する問題