问题标签 [phoenix-channels]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
elixir - 仅在加入 Phoenix 时验证某些频道
如何更改此代码以连接到不需要身份验证的频道,同时仍允许在某些频道上进行身份验证?
phoenix.js:701 WebSocket 连接到 'ws://localhost:4000/socket/websocket?token=&vsn=1.0.0' 失败:WebSocket 握手期间出错:意外响应代码:403
user_socket.ex
collection_channel.ex
应用程序.js
socket.js
reactjs - react-redux 在哪里存储套接字连接?
尝试了两种方法:
/li>connectToServer()
从Starter
组件中的动作创建者调用componentDidMount();
并像这样调度:
接下来我通过 redux 的 mapStateToProps 接收状态connect
。结果是组件被调用了四次,结果 props 为空。
- 将所有逻辑放入reducer,但结果是:组件使用空道具(未定义的属性)呈现,并且在我在控制台日志中看到连接已建立但组件已经呈现之后的那一刻。
如何处理这样的问题?感谢您的任何建议。
websocket - Elixir 通道/套接字中处理身份验证/权限的架构/技术挑战
因此,我决定将我在 Node.js 中编写的应用程序重写为 Elixir,因为 Elixir 开箱即用的使用 Node 会带来额外的复杂性。
我的问题是我在 Node 中不太正确的问题,并且在 Elixir 中变得同样复杂,我不完全确定如何解决它。
我正在尝试重新创建很多不和谐的权限。我本质上是在构建一个 CRM 系统,具有不同的角色,如“销售经理”、“销售”、“客户服务代表”等……但他们都能够根据自己的“角色”做不同的事情。
我需要做的一些事情是能够即时更新人员或角色的权限。也许“销售经理”角色不能像“会计师”那样查看公司财务数据,但我们需要让该特定人员访问几天。或者我有一个“客户服务代表”,我们让整个角色能够将事情添加到日历中。我也想有能力杀死会话。
所以我在 Elixir 论坛上看到过一些说法,比如:
- 使用 Guardian,我真的很想喜欢令牌,并认为不必每次都访问数据库听起来很棒,但我认为这并不实用。除非有一个很好的解决方案来即时更新我还没有找到的令牌。
- 为每个人提供自己的流程,然后根据新的更改终止并启动流程。这看起来很整洁,但除非出现实际错误,否则我宁愿不杀死进程,我认为这个解决方案会带来很大的问题,比如跟踪问题。虽然我不太熟悉这是否真的会导致问题,或者由于其他原因这是一个糟糕的解决方案。
- 将 Guardian 与 Guardian_DB 一起使用,这会破坏使用令牌的目的,但至少我会有一个可跟踪的会话。我唯一的问题是我确实计划使用负载平衡器,这样如果套接字连接断开,我可以将其重新连接到同一台服务器,但我不确定是否有办法使用令牌或套接字本身有附加到它的会话。不过,这并不是什么大问题,并且与我在 Node.js 中遇到的问题非常接近。
- 使用我想远离的 Redis,然后在更新发生时根据 user_id 更新 Redis 中的会话数据,并在每个请求上点击 Redis 以查看用户是否具有权限。我计划最终将它放在多个服务器上,这意味着 ETS 是不可行的,除非我可以像在 Node.js 中那样对套接字连接进行负载平衡。
所以我想我的问题是,
- 我可以将会话附加到套接字吗?这是一个坏主意吗?
- 我是否还应该使用令牌,并且只使用 Redis 在每个请求上检查令牌?
- 令牌仍然是比会话更好的选择吗?
- 有没有我什至没有提到的更好/更简单的解决方案?
很抱歉,这太冗长了,我从来没有像这个项目那样专业地做一些需要许可的事情,而且我对 Elixir 还是很陌生。
heroku - Elixir/Phoenix 频道的 Heroku H15 错误
一旦我开始在 Phoenix 中使用 Channels,我就开始在 Heroku 上遇到很多这样的错误:
重现此问题的可靠方法是在笔记本电脑上:
- 打开连接到 WebSockets 的 Phoenix 页面
- 合上笔记本电脑的盖子
- 等待一分钟左右(WiFi 断开/操作系统进入睡眠状态)
- 将发生 H15 错误。
我已经在我的 UserChannel 上设置了 45 秒的超时时间;我正在运行 Elixir 1.4.2
,Phoenix1.2.1
和我phoenix.js
刚刚升级到 Phoenix 中使用的那个1.3.0-rc0
(链接到 rev)
我可以看到前端记录的错误,但之后它会愉快地重新连接到后端:
非常感谢如何解决此问题的任何帮助或想法。
编辑:我熟悉 Heroku 的H15 错误代码定义,所以我正在寻找修复或解决方法来消除错误(当然,除了从 Heroku 迁移之外)。
phoenix-framework - 频道上所有听众的列表
怎么可能在某个时刻看到频道上的所有听众?(我的意思是 phoenix-js 和客户端 js 代码)
像这样的东西:
elixir - Elixir/Phoenix 在加入频道上传递有效负载
频道有这个authorized?
功能,我想在加入频道时传递生成的本地令牌,以便我可以验证用户的角色,如下所示:
但是,在我的频道设置中,我似乎在加入时没有收到来自客户的任何信息:
IO.inspect(payload)
只是%{}
。我在这里做错了什么?加入频道时甚至可以收到消息吗?
java - Phoenix channel.push 无法在 Android 上运行
我正在尝试使用 Phoenix 频道在我的应用程序中聊天。我有一个 Web 客户端和一个 Android 客户端。现在它在网络上正常工作。我在 Android 端遇到问题。
它能够接收推送到频道的消息,但不会发送任何消息。当我尝试推送消息时,会抛出以下异常:
java.net.SocketTimeoutException:超时异常
java.lang.IllegalStateException:另一个消息编写器处于活动状态。你有没有调用close()?
我的聊天频道
在创建频道的 Android 应用上
在 Android 应用上推送到频道
elixir - 安装 cassandra_ecto 时出错 - Elixer phoenix 框架
在安装 cassandra_ecto 并启动服务器时,遇到一些错误
在它之后无法继续。