gpt4 book ai didi

signalr - HotTowel(真的是 Durandal)和 SignalR 初始化

转载 作者:行者123 更新时间:2023-12-04 07:24:06 25 4
gpt4 key购买 nike

所以我正在整合 SignalR 和 HotTowel,虽然我真的认为这是一个如何与 Durandal 本身整合的问题。

问题是我显然有多种观点。其中一些 View 我想响应 SignalR 消息。问题是考虑到在调用 SignalR 的集线器启动方法之前必须启动 SignalR 事件,如何进行这种集成。

所以以我有view1和view2的例子为例。我希望每个人在收到 SignalR 消息时在该 View 的上下文中做一些事情(所以假设以某种方式更新 DOM)。这显然是一个 SPA,因此为每个 View 调用 SignalR 启动方法似乎是一个坏主意,因此在启动时启动 SignalR 一次听起来是正确的计划,但那时我的 View 可能尚未加载,我仍然如何确保我的事件具有页面的正确上下文。

这是基于我的理解,SignalR 的所有事件都必须在我调用 start 之前注册。 StackOverflow 的聪明人有什么想法吗?

编辑以扩展问题

该网站的一部分涉及上传文件以进行解析和处理以导入数据库。我创建了一个 View ,其中选择了文件并将其上传(使用 FineUploader)到 WebApiController。 Controller 执行检查上传文件的基本步骤,然后启动一个异步任务来实际进行解析和处理,同时立即返回基本的“是的,上传得很好”消息。

这会导致“进行中”文件列表刷新,并且文件显示为“已上传”状态。当异步任务发生时,文件被解析,然后根据规则系统进行处理,最后导入到另一个后端数据存储中。当这些状态更改中的每一个发生时,SignalR 会向客户端发送消息以通知它们这些更改,从而根据文件名更新状态。为了发生这种情况,我必须将一个函数附加到 SignalR 中接收到的事件中。这甚至需要对我的 View (实际上是 View 模型)进行某种引用,以便它可以更新正确的值。

由于 SignalR 应该通过调用 hub.Start() 启动一次,因此我尝试在“启动”阶段执行此操作。但是,当我的 SPA 启动时,该 View 尚未加载,因此该 View 模型也没有加载,因此我负责初始化 SignalR 的函数无法理解它必须更新的 View / View 模型。

我在使用 SignalR 时看到的示例显示它在一个 View 中使用,但是如果您需要在多个 View 中使用它,那确实不能正常工作(您不能一直调用 hub.start() 是吗)?

抱歉,如果这仍然没有意义,我会发布一些代码或其他内容。

最佳答案

如果你使用

$.connection.myHub.on("myMethod", function (/* ... */) { /* ... */ });

代替
$.connection.myHub.client.myMethod = function (/* ... */) { /* ... */ };

您可以在调用后添加客户端集线器方法 $.connection.hub.start() ;

关于signalr - HotTowel(真的是 Durandal)和 SignalR 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17013971/

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