1

トピック ID はどこに保存しますか?

ソケットに関しては、次を使用できます。

def join("topic:" <> topic_id, _params, socket) do
    ...
    socket= assign(socket, :topic_id, topic_id)
    {:ok, socket}
end

それはソケット スコープでしたが、私のユーザーは同時に複数のトピックに参加できます。つまり、新しいトピックが参加するたびに上記のコードが topic_id をオーバーライドします。本当ですか?

でアクティブなトピック ID を知りたい場合はどうすればよいhandle_inですか?

例えば:

def handle_in("new_message", params, socket) do

    # what is the active topic id here?

end

私はこれについて考えました:

def handle_in("new_message:" <> topic_id, params, socket) do

    # now, I know that topic_id is the active topic

end

これを行う別の方法はありますか?または、これはどのように行われますか?

4

2 に答える 2

6

ユーザーは複数のトピックに参加できます。のparamtopicからcurrent にアクセスできます。sockethandle_in

ルーム トピックのベースが"topic"であるとすると、トピック ID を取得する方法は次のとおりです。

def handle_in("some_message", _params, socket) do
  "topic:" <> topic_id = socket.topic
  ...
end
于 2016-05-19T21:07:49.417 に答える