是否可以在与SignalR .NET后端集线器不同的服务器/域上运行客户端及其自动生成的集线器,即。将数据推向客户端的那个?
客户域名: lgi15q1026
服务器域: lgi14q1030
我想知道这是否正确。要自动生成客户端集线器,我们必须在html视图中插入一个脚本行,如下所示:
<script src="signalr/hubs" />
但这显然不会起作用,因为客户端集线器与服务器集线器位于不同的机器上。这将生成此URL:
导致404错误。所以要解决这个问题,我必须这样做:
<script src="//lgi14q1030/Board.WebApp/signalr/hubs" />
这会有用吗?
编辑:我使用RequireJS作为AngularJS的依赖管理器。
答案 0 :(得分:1)
由于使用RequireJS加载了jquery.signalR.js
脚本,因此您无法通过执行以下操作自动生成客户端中心脚本:<script src="signalr/hubs" />
解决方法是从html中删除<script>
标记并使用RequireJS加载脚本:
require.config.json:
{
"baseUrl": "",
"paths": {
"signalR": "bower_components/signalr/jquery.signalR",
"signalRhub": "http://lgi14q1030:80/Board.WebApp/signalr/hubs?noext"
},
"shim": {
"signalR": {
"deps": [ "jquery" ],
"exports": "$.connection"
},
"signalRhub": {
"deps": [ "signalR" ]
}
}
当然你必须将javascript注入你的控制器:
angularJS控制器:
define(
['../app', '../services/eventDataService', 'signalRhub'],
function (eventsApp) {
'use strict';
eventsApp.controller('eventController', ['$scope', '$filter',
function ($scope, $filter) {
var hubUrl = "http://lgi14q1030/Board.WebApp/signalr";
$.connection.hub.url = hubUrl;
var myHub= $.connection.myHub;