首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HotTowel (杜兰达尔真)与SignalR初始化

HotTowel (杜兰达尔真)与SignalR初始化
EN

Stack Overflow用户
提问于 2013-06-09 20:43:17
回答 1查看 1.1K关注 0票数 8

所以我正在集成SignalR和HotTowel,尽管我真的认为这是一个如何与Durandal集成的问题。

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

以view1和view2为例。我希望每个人在接收到SignalR消息并在该视图的上下文中做一些事情(比如以某种方式更新DOM )。这显然是一个SPA,因此为每个视图调用SignalR启动方法似乎是个坏主意,因此在引导时启动SignalR听起来是正确的计划,但此时我的视图可能还没有加载,而且如何确保我的事件具有正确的页面上下文。

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

编辑关于问题的扩展

该网站的一部分内容包括上传文件以进行解析和处理,以便导入数据库。我已经创建了一个视图,在该视图中选择文件并(使用FineUploader)上传到WebApiController。控制器执行检查上传的文件的基本步骤,然后启动一个异步任务来实际执行解析和处理,同时立即返回基本的"Yep上载精细“消息。

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

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

我在使用SignalR时看到的例子显示它在一个视图中使用,但是如果您需要多个视图(您不能一直调用hub.start(),可以吗?)

对不起,如果这还不合理的话,我会发布一些代码什么的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-13 02:57:23

如果您使用

代码语言:javascript
复制
$.connection.myHub.on("myMethod", function (/* ... */) { /* ... */ });

而不是

代码语言:javascript
复制
$.connection.myHub.client.myMethod = function (/* ... */) { /* ... */ };

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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17013971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档