gpt4 book ai didi

websocket - 无法连接到 Phoenix 的网络套接字 : Ignoring unmatched topic. 但我认为它匹配

转载 作者:行者123 更新时间:2023-12-02 23:43:03 27 4
gpt4 key购买 nike

我是 Phoenix 和网络套接字的新手。我正在尝试使用 Web Sockets 创建一个应用程序,但 Phoenix 说忽略 Protsci.UserSocket 中不匹配的主题“analysis:dn-ds.axin2”。我认为我有适合此类主题的处理程序,所以我不明白问题出在哪里。我是否错过了 Phoenix 应用程序中的某些内容?或者可以在客户端吗?这是我的设置:

# web/ |
# -----| user_socket.ex
# -----| analysis_channel.ex

# user_socket.ex
defmodule Protsci.UserSocket do
use Phoenix.Socket

channel "analysis:*", Protsci.AnalysisChannel

transport :websocket, Phoenix.Transports.WebSocket

def connect(_params, socket) do
{:ok, socket}
end

def id(_socket), do: nil
end

# analysis_channel.ex
defmodule Protsci.AnalysisChannel do
use Phoenix.Channel
require Logger

def join("analysis:" <> topic, _message, socket) do
Logger.info "Join"
case String.split(topic, ".") do
[analysis, protein] ->
reply = %{ :received => :message, :analysis => analysis, :protein => protein }
{:ok, reply, socket}
_ ->
reply = %{ :error => "Unmatched topic", :msg => :topic }
{:ok, reply, socket}
end

end

def handle_in(
analysis,
%{"x" => x, "y" => y, "z" => z},
socket
) do
Logger.info "in"
broadcast! socket, :analysis, %{body: x + y + z}
{:noreply, socket}
end

def handle_in("new:msg", _msg, socket) do
broadcast! socket, :type, %{body: "Unknow message type"}
{:noreply, socket}
end

def handle_in("analysis:" <> topic, _msg, socket) do
broadcast! socket, topic, %{body: "Unknow message type"}
{:noreply, socket}
end

end

最佳答案

问题是由于我在发送消息之前没有加入 channel 。

关于websocket - 无法连接到 Phoenix 的网络套接字 : Ignoring unmatched topic. 但我认为它匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51696351/

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