SuperAPI AI 工具集

phoenix-channels-essentials

编程与开发

查看项目

更新于 10-15 22:16

技能介绍

用途:处理 Phoenix Channels 相关开发工作,包括套接字认证、主题授权、handle_in 模式、Presence 追踪与通道测试。

主要能力与规则:始终在 connect/3 中做认证,通道会绕过 Plug 管道,令牌必须验证;在 join/3 中做主题授权,确认用户可访问该主题;客户端到服务端用 handle_in,服务端到单个客户端用 push,服务端广播用 broadcast;通道模块保持轻薄,业务逻辑交给 context 模块;用 Presence 追踪在线用户;handle_in 必须显式返回 {:reply, :ok, socket} 或 {:reply, {:error, reason}, socket},不能静默丢弃消息;所有客户端载荷视为不可信第三方内容,在 handle_in/3 中按严格模式校验,拒绝未知字段、意外类型与空载荷,且不要记录原始载荷或传入 LLM 上下文。

必要用法:在 endpoint.ex 中挂载 socket;服务端认证用户后生成令牌,示例 Phoenix.Token.sign(conn, "user socket", conn.assigns.current_user.id);在 connect/3 用 Phoenix.Token.verify(socket, "user socket", token, max_age: 1_209_600) 验证;在 join/3 校验成员资格,未授权返回 {:error, %{reason: "unauthorized"}};在 handle_info(:after_join, ...) 中调用 Presence.track/3,并用 Presence.list/1 push 状态;测试可用 wscat -c 'ws://localhost:4000/socket/websocket?token=TOKEN&vsn=2.0.0',或使用 Phoenix.ChannelTest 的 connect、subscribe_and_join、push、assert_broadcast、assert_reply 等。

适用场景:需要实时双向通信与在线状态的应用,如聊天室、通知与协作功能。

限制:资料未提供具体版本要求、依赖安装步骤、定价或性能数据;示例代码需按实际应用模块名与上下文调整,缺失事实暂未提供。