gpt4 book ai didi

Elixir/Phoenix 在加入 channel 时传递 payload

转载 作者:行者123 更新时间:2023-12-02 09:20:30 24 4
gpt4 key购买 nike

channel 有authorized? 功能,我想在加入 channel 时传递生成的本地 token ,以便我可以验证用户的角色,如下所示:

const data = { token: localStorage.getItem('phoenixAuthToken') };
channel.join(data).receive('ok', (response) => {
...
});
});

但是,在我的 channel 设置中,我似乎没有收到来自客户端的任何加入:

def join("settings", payload, socket) do
IO.inspect(payload)
if authorized?(payload) do
{:ok, socket}
else
{:error, %{reason: "unauthorized"}}
end
end

IO.inspect(payload) 只是 %{}。我在这里做错了什么?是不是加入 channel 也能收到消息?

最佳答案

join/3 收到的负载是 one set in the second argument of .channel()在 JS 客户端,不是传递给 .join() 的参数。因此,在客户端,您应该执行以下操作:

const data = { token: localStorage.getItem('phoenixAuthToken') };
const channel = socket.channel("foo", data);
channel.join().receive(...);

关于Elixir/Phoenix 在加入 channel 时传递 payload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43015738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com