2016-08-07 21 views
0

Iてきたこのテストのために、それはエリクシル繰り返し

2行ごとに、私はすべての接続WebSocketをが例えば同じライン

を受信したいを読み取って、ファイルを読み込み処理と、

ユーザ2は、彼がライン3を受信した3秒後に接続する場合、ユーザ1は、..第3行の後に..彼は第2行の後、ライン1を受信ライン4を接続し、そう

オンの場合2分後に4番線などを受け取ります。

これはどのように実装しますか?私はカウボーイv1またはv2を使うべきですか?

これは、私はあなたがフェニックスを使用していると思いますPubSubの

defp stream_from_file(fpath, bytes) do 
    File.stream!(fpath, [], bytes) 
    |> Enum.each(fn chunk -> 
     PubSub.publish(:topic1, {:topic1_data, chunk}) 
     :timer.sleep(1_000) 
    end) 
    stream_from_file(fpath, bytes) 
    end 

答えて

0

を使用してファイルから読み込むプロセスのためのコードです。その場合はどこからでもエンドポイントでブロードキャストを呼び出すことができます。だから、あなたがあなたのPubSub.publishラインを置き換えることができます:

MyApp.Endpoint.broadcast("room1", "topic1", %{topic_data: chunk}) 

このようなメッセージは、あなたがそれを受け取ることになるクライアント側ので、「topic1」イベントでROOM1チャネルに参加したすべてのユーザーに送信されます。

let channel = socket.channel("room1", {}) 
channel.join() 
    .receive("topic1", body => { console.log(body.topic_data) }) 
+0

[{:plug、 "〜> 1.0"}、{:cowboy、 "〜> 1.0"}、{:pubsub、 "〜> 0.0.2"}]を使用して、 – IddoE