jqueryを使用してajax呼び出しを行い、到着するとすぐにサーバーからの応答をレンダリングしようとしています。サーバーでは、準備ができ次第、さまざまな応答を送信します。私がcurlを使用してリクエストを行うと、レスポンスによってスクリーンレスポンスでどのように印刷されるのかがわかります。しかし、私はjquery ajaxを使って同様のことをすることはできません。javascriptとrevel golangサーバー間のロングポーリング
flusher, ok := app.Response.Out.(http.Flusher)
if !ok {
panic("expected http.ResponseWriter to be an http.Flusher")
}
app.Response.Out.Header().Set("Connection", "Keep-Alive")
app.Response.Out.Header().Set("Transfer-Encoding", "chunked")
app.Response.Out.Header().Set("X-Content-Type-Options", "nosniff")
fmt.Fprintf(app.Response.Out, string(JsonOffers))
flusher.Flush()
このコードスニペットは、ループに呼び出している:
サーバー上のコードは次のようです。 app.Response.Out
はhttp.ResponseWriter
です。ない一つ一つを、私はすべてのオファーを取得しますが、最後の応答が処理された場合にのみ、およびこれにより
jQuery.ajax({
url: '/ndc',
type: "POST",
data: ODRequest,
success: function(offers){
console.log('Offers', offers)
},
error: function(x,y,z){console.log("ERROR", x);}
})
:
私は要求は、通常のjquery.ajax機能です。私は各要求で、これを見ることができます
一つのことより...(それは重要なことができれば、私は知らない)サーバーのコンソール上:
server.go:2161: http: multiple response.WriteHeader calls
>値のペア。内部のajax関数 'data:ODRequest'を' data:{control: 'ODRequest'} 'にリネームし、必要なサーバ側を更新する必要があります。また、 'dataType: 'json''をajax関数に追加してください。 –
こんにちは@AniketSahrawat ODRequestはjsonオブジェクトです。そしてサーバーでは、私はすべてのフィールドを取得することができます...だから私はそれが今のものではないと思う。とにかくありがとう。 –
あなたはデータを 'stream 'したいと思っています。ストリーミングされているので、レスポンスでカールのプリントを見ることができます。私はアヤックスの方法についてはわかりませんが、それが強力な要件でない場合は、websocket経由でレスポンスを書くことができます。 – algrebe