2016-06-19 10 views
0

現在GoのWebサービスで作業していますが、これは本質的に要求を受け取り、かなり典型的なJSONを返します。しかし、この特定のJSONは実際に完了して戻るのに10秒以上かかります。 JSONに依存するWebサイトを作成しているため、JSONの内容が変更される可能性があるため、後で置き換えられるプレースホルダとして名前(潜在的に更新または新規)を迅速に生成して返すルートを実装しました名前に。その背後にある全体のアイデアは、Webサイトがサービスに接続し、すぐにJSONを取得してテーブルを作成し、実際のデータがサービスから戻ってくるまで待つことです。Goで継続的にデータを送信する

これは私が問題に遭遇した場所です。私は新しく移動していて、その膨大なライブラリを完全に理解していない可能性があります。 HTTPリクエストでJSONを返すために使用した以前のメソッドは、ResponseWriter.Write(theJSON)でした。しかし、Write()はレスポンスを終了するので、将来的に今や悲惨なサービスをpingし続ける必要があります。

私の知るところでは業界の知識を求めています。 HTTP接続は、同じHTTP要求を介して区分的にデータが送信されるような連続性がありますか?それは計算上またはセキュリティ上のスマートな機能でも、私が提案していることを実行するためのよりよい方法がありますか?最後にGoはそのような機能をサポートしていますが、パフォーマンスの最適化のために非同期に処理する方法はありますか?

私のウェブサイトはReact.jsを使用しています。ありがとう!

+2

あなたはWebSocketでもっとうまくいくかもしれないと思います。 –

+1

@AmmarBandukwalaが述べたように、[websockets](http://www.gorillatoolkit.org/pkg/websocket)は行く方法です。 –

答えて

2

私はtcp.conを長く持続させるのではなく、これに加えてこの効果を達成するためにhttpsウェブソケットを使用します。 Goの開発者のgolang.org/x/net/websocketパッケージ、または使用方法の詳細については、ゴリラWebツールキットのhttp://www.gorillatoolkit.org/pkg/websocketを参照してください。埋め込みの中断や再開を可能にするために、パッディングや小さなサブユニットを使用したり、以前提出されたJSONを書き換えるためのdiffプロトコルの一種を使用することができます。小さな接続故障でもかなり安定したwebsocketが見つかりました。

0

GoはあなたがWebサービスとしてrestapiを使用することができますし、継続的に上でデータを送信されることができjson.SOとしてデータを送信されることができfelixqe

-1

からキープアライブ機能net.TCPConnのSetKeepAlive

kaConn, _ := tcpkeepalive.EnableKeepAlive(conn) 
kaConn.SetKeepAliveIdle(30*time.Second) 
kaConn.SetKeepAliveCount(4) 
kaConn.SetKeepAliveInterval(5*time.Second) 

コードを持っています通信チャネル。

関連する問題