问题标签 [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.

0 投票
1 回答
74 浏览

phoenix-framework - Presence Chapter Presence Phoenix 1.4.6 Guides raises for Identifier 'socket' 已经被声明

我正在阅读 Phoenix Guides 1.4.6 并且我在Chapter Presence。所以我遵循本章的所有步骤,我的控制台 javascript 对此抱怨:

我的代码在这个repo中。

如果我删除let它,它会抱怨一个新错误:

0 投票
2 回答
390 浏览

testing - 在我的 Phoenix.Channel 的 terminate/2 方法的测试中修复“owner #PID<...> exited with: shutdown”

在我的频道中寻找测试terminate/2 回调的帮助。

测试和设置如下所示:

在 terminate/2 方法中,我只是调用了一个辅助模块,我们将其命名为TerminationHandler

TerminationHandler 中的 call/0 方法包含一个数据库查询。它可以看起来像这样,即

这是我定期收到的错误(可能在 10 次运行中出现一次)

将不胜感激任何有关此错误的原因和可能的方法来避免它的回应。

0 投票
1 回答
118 浏览

websocket - 随机额外的 websocket 连接到凤凰应用程序?

具有单通道的简单用户 websocket。我几乎从凤凰指南中的“如何”部分复制了这个代码字。

在此处输入图像描述

第一个请求是我的 - 它包含来自 facebook 登录响应的用户身份验证令牌。正如您所看到的,它来自phoenix.js文件,它工作得很好......我能够发送和接收消息 - 没问题。

第二个似乎完全来自其他地方,我不知道为什么!?

frame.js这不是我的文件,因此必须是某种 node_module 依赖项的一部分,js 被压缩成一行并且不完全清晰。

我也每 5 秒左右在日志中得到这个:

我在这里做错了什么?

凤凰 1.4.10

用户套接字:

端点代码:

0 投票
1 回答
377 浏览

graphql - 为什么我的 Absinthe GraphQL 订阅不起作用?

我的架构:

当我做

我收到这个错误TypeError: Failed to fetch

日志:

这是我的其余设置:

用户套接字: use Absinthe.Phoenix.Socket, schema: DrawingApiWeb.Schema.Schema

端点: use Absinthe.Phoenix.Endpoint

路由器:

所有这一切都发生在我对任何上下文进行任何更改之前。无论问题是什么,它都应该在设置中。我已按照 Absinthe-GraphQL 书和 Pragmatic Studio 视频中的确切说明进行操作,并使用https://hexdocs.pm/absinthe/subscriptions.html进行了验证

还是同样的错误。提前谢谢你的帮助。

0 投票
2 回答
885 浏览

elixir - 如何在 Phoenix LiveView 中测试 handle_info/2?

问候凤凰 LiveView 奇才!

语境

我们有一个基本的 LiveView 计数器应用程序:https
://github.com/dwyl/phoenix-liveview-counter-tutorial 代码非常简单: 该应用程序按预期工作,请参阅:https://live-view-counter.herokuapp .com/live/counter.ex

测试文件是: 我们一直试图在测试中调用该函数。 所以我们的项目中有未经测试的代码。这是不可取的。 见:https ://codecov.io/gh/dwyl/phoenix-liveview-counter-tutorial/src/master/lib/live_view_counter_web/live/counter.extest/live_view_counter_web/live/counter_test.exs
handle_info/2

柜台未覆盖

我们已经阅读了官方文档https://hexdocs.pm/phoenix_live_view/Phoenix.LiveViewTest.html
但无法理解如何去做。我们缺少什么?

我们真的很想LiveView在我们的“真实”项目中使用,但我们想确保我们的LiveView应用程序经过全面测试。

问题

我们如何编写一个测试来调用该handle_info/2函数?

0 投票
1 回答
59 浏览

android - 如何让我的 Android 应用程序连接到后端通道以接收更新并触发设备中的事件?

我正在开发一个 Android 项目,我的应用程序user_channel在后台连接到并在频道中发生新事件时显示通知。

视图模型代码

存储库代码

活动代码

现在,当应用程序处于前台,并且我的应用程序连接到通道时,我可以检查事件并且它工作正常但是当应用程序被杀死时,应用程序离开通道,我如何保持连接到通道以接收通知? 我还了解到,尽管 Facebook 和 whatsapp 之类的应用程序在后台保持活跃并显示通知,但发布 Android Oreo 后台工作是有限的,它们是如何做到的 - 我如何才能继续实现我的目标,即通过保持连接来接收通知非常感谢后台通道调用 Viewomdel 方法的任何建议,在此先感谢!

0 投票
1 回答
97 浏览

elixir - 使用 Phoenix Channels 计时

我正在尝试创建一个仅包含用户可以订阅的时钟的 Phoenix 频道。

我遇到的问题是,当多个客户端加入时,我最终会每秒安排多个滴答声。

我怎样才能只安排一个滴答作响的时钟?

0 投票
1 回答
297 浏览

angular - 使用 Phoenix.js 连接 Angular 9

我正在尝试使用phoenix.jsAngular 9作为客户端连接到现有的 phoenix 通道。

首先,我通过 cli 命令创建了一个 Angular 应用程序,并通过npm install phoenix. 然后我添加了凤凰路径angular.json

然后我创建了一个服务

最后,在AppComponent

结果我得到

core.js:6237 错误类型错误:无法读取新 AppComponent 处未定义的属性“连接”(app.component.ts:14)

phoenix.js:1 WebSocket 连接到“wss://api.catalx.io/markets/websocket?vsn=2.0.0”失败:WebSocket 握手期间出错:意外响应代码:403

我想我遇到这些错误是因为PhoenixService无法抓取phoenix.js?一点帮助表示赞赏!

0 投票
1 回答
256 浏览

elixir - 如何指定我自己的 Phoenix Channel JSON 序列化器?

在我的端点中,我得到了如下所示的内容:

我正在尝试用我自己的序列化器替换 JSON 序列化器(在传出消息上对驼峰进行编码)。

我知道这种语法不正确;它应该怎么看?

更新:

所以为了测试的目的,我这样设置:

但它实际上不起作用:

我认为还有一个版本号的额外问题,并且查看源代码,它看起来需要一个元组......

0 投票
1 回答
563 浏览

vue.js - 建立连接后,Phoenix Channel 无法与前端保持连接(WebSocket 握手期间出错)

我的 WebSocket 连接有问题。

我在前端使用 Phoenix 作为我的 API 和 Vue + phoenix-socket。

我的浏览器控制台如下所示:

等等……

如您所见,可以建立连接并且数据通过,但随后会发送错误。

所以我检查了凤凰:

看起来连接被拒绝,因为参数中没有令牌,但我真的不明白为什么。

我只在套接字连接时检查身份验证,因此一旦建立连接,令牌应该是完全不需要的。

这是我的 user_socket.ex:

渠道代码:

和 Vue.js 代码: