私は2つの異なるプロジェクトがある - 1:は、純粋なサーバーでのWeb APIが含まれています 私は要求を取得し、ハブに呼び出すためのWebメソッドを持っています。
[HttpGet]
[Route("api/GetData")]
public IHttpActionResult GetCorpDataApi()
{
return Ok(getResponse());
**startWebSocket();**
}
スタートウェブソケット方法
私のハブ内のメソッドへの呼び出しprivate void startWebSocket()
{
MonitorHub hub = new MonitorHub();
Timer myTimer = new Timer();
myTimer.Elapsed += new ElapsedEventHandler(hub.DisplayTimeEvent);
myTimer.Interval = 3000;
myTimer.Start();
}
::への呼び出し
public class MonitorHub : Hub
{
public void DisplayTimeEvent(object source, ElapsedEventArgs e)
{
var response = MonitorUtils.GetCorpData();
Clients.All.broadcastMessage(response);
}
}
(すべてが同じプロジェクトにあり、エラーなしでコンパイルされています)。私はindex.htmlの中に含まれていることに言及したい
function initWebSocket() {
self.chatHub = null; // holds the reference to hub
self.chatHub = $.connection.MonitorHub; // **I dont have MonitorHub**
$.connection.hub.start();
self.chatHub.client.broadcastMessage = function (response) {
//bla bla
};
}
:
私のクライアントコードは(もVS下)クライアントの角度のプロジェクトに位置しており、 は、私は、コントローラ内に必要な機能を追加しましたファイル:
<script src="scripts/Vendor/jquery/jquery-2.2.1.js"></script>
<script src="scripts/Vendor/jquery/jquery.signalR-2.2.1.js"></script>
<script src="scripts/signalr/hubs"></script>
<script src="assets/global/plugins/angularjs/angular.min.js" type="text/javascript"></script>
$ .connection.MonitorHubは取得されません - 未定義です。
私は本当にそれがサーバー側 がクライアント側とは異なるプロジェクトにあるという事実と関係があると考えています。チャットの例のような簡単な例を実行すると、すべて同じプロジェクト内で動作します。
コンソールに次のエラーが表示されます。 エラー:SignalR:ハブの読み込み中にエラーが発生しました。ハブの参照が正しいことを確認してください(例: 。
ありがとうございますが、そうではありません。 コンソールでエラーが発生しました。 エラー:SignalR:ハブの読み込み中にエラーが発生しました。ハブの参照が正しいことを確認してください(例: 。 – moshi
jsファイルでリソースパスの不一致が発生していないかどうかを確認してください。 – Tushar
私は(f12で調べると)シグナル/ハブのフォルダは表示されません。 – moshi