2013-02-27 127 views
3

是否可以编写WebSocket(SignalR)客户端,而无需将其嵌入IIS(或其他ASP.NET Web服务器)上托管的ASP.NET应用程序中?没有ASP.NET的SignalR Web客户端?

例如,如果我有一个带有自定义Hub的Self Hosted SignalR Server,是否有可能(如果是这样,如何)从“纯”Javascript网页客户端调用它?

在这种情况下,我们在~/signalr/hubs/文件夹中没有运行时生成的“魔术”脚本的<script src="~/signalr/hubs" type="text/javascript" />部件。

回答

6

您不需要有一个适用于SignalR的asp.net应用程序。您可以创建一个通用html页面,并仍然与SignalR服务器通信。你甚至可以利用silverlight,windows phone或其他客户端与SignalR服务器进行通信,目前支持的还有很多,第三方开发的更多(如android,ios,node等)。

当你说“纯粹的”JavaScript客户端时,我假设你的意思是没有像JQuery这样的第三方库,在这种情况下,SignalR目前无法使用JQuery,但不依赖于JQuery的客户端正在管道中(https://github.com/SignalR/SignalR/issues/372 )。

您可以使用ASP.NET Owin创建Self Hosted服务器来下拉SignalR。

编辑: 为了使用自己托管的服务器,您必须在您的应用程序中启用跨域。查看答案:SignalR: Error during negotiation request: undefined

+0

感谢您的回复。仍然:客户端Javascript代码应该如何在不使用'〜/ signalr/hubs /'中的脚本的情况下调用SignalR Hub方法?允许使用jQuery,并允许使用jQuery的SignalR模块(例如jquery.signalR-1.0.0.min.js)。 – Osi 2013-03-01 14:23:37

+0

所以我需要的是“创建一个通用的HTML页面,并仍然与SignalR服务器通信”。不幸的是,我还没有找到任何有关这方面的文档。 – Osi 2013-03-01 14:29:23

+1

签出SignalR wiki。调用没有集线器代理和跨域支持的集线器方法:https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client-Hubs-%28No-Proxy%29。请注意,跨域也适用于WebSockets。 – 2013-03-01 19:02:30