Bağlantı kesikli durumda birkaç saniyeliğine açık tutulabilir mi? istekteElixir Fiş bağlantısını açık kefalet modunda tutun
Ben aldığı birkaç süreçleri oluşturmak 5 saniye bitirmek ve bundan sonra ben istemciye yığın aracılığıyla yanıt göndermek istediğiniz diyelim, ancak bağlantı
Ben postacı ile bu test ediyorum kapalıdır ve bu başlıklara sahip :
"Bağlantı": "Canlı tutma", "Keep-Alive": "zaman aşımı 10000 ="
Bu çıkış her zaman benim en aza uygulamadır edilir "InitEnd" istenen sonuçtur : "Init1234 Böyle 567789End" falan:
defmodule AlivePlug do
import Plug.Conn
def init(opts) do
opts
end
def call(conn, _opts) do
conn = send_chunked(conn, 200)
# send initial chunk
chunk(conn, "Init")
pid = start_thread
# create 10 async processes which does somthing for 5 seconds and then sends result via chunk
1..10
|> Enum.each(fn num ->
send pid, {conn, num}
end)
# send End as a symbol of last chunk
chunk(conn, "End")
conn
end
defp start_thread, do: spawn_link(fn -> thread_listener end)
defp thread_listener do
receive do
{conn, num} ->
:timer.sleep(5000)
# problem is here :(
# chunk returns {:error, :closed}
{:error, :closed} = chunk(conn, "#{num}")
thread_listener
_ ->
thread_listener
end
end
end
Yanıtınızı göndermek için başka bir bağlantı açmak mümkün mü acaba? – vikram7