MVC プロジェクトに signalR のクライアントとサーバーの両方をインストールしました。Web クライアントからハブを呼び出すことができます。
var testHub;
$(function () {
// Setup SignalR
testHub = $.connection.myhub;
testHub.msg = function (ref) {
alert(ref);
};
$.connection.hub.start(function () {
testHub.addToQueue("TESTMSG");
});
});
コントローラでは、リクエストを処理した後にハブを呼び出す必要があります。そのため、SignalR.Client.dll -Version(0.5.2.0) および Newtonsoft.Json.dll(4.5.0.0) ランタイム 4 への参照を追加しました。
私のコントローラー呼び出しは以下のとおりです
var connection = new HubConnection("http://localhost:50439/");
IHubProxy myHub = connection.CreateProxy("myhub");
connection.Start().Wait();
myHub.Invoke("addToQueue", new { message = "Hello world" }).ContinueWith(task =>
{
}, TaskContinuationOptions.OnlyOnFaulted);
そして私のハブは以下のようになります:
[HubName("myhub")]
public class QueueHub:Hub
{
public void addToQueue(string message)
{
Clients.msg(message);
}
}
しかし、コントローラーからの呼び出しが発生すると、システムは以下のエラーを取得します: 文字列の読み取り中にエラーが発生しました。予期しないトークン: StartObject。パス ''、1 行目、位置 46.、JsonSerializer
そして詳細:
---> (Inner Exception #0) System.AggregateException: One or more errors occurred
. ---> System.Net.WebException: The remote server returned an error: (500) Inter
nal Server Error.
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at SignalR.Client.Http.HttpHelper.<>c__DisplayClass2.<GetHttpResponseAsync>b_
_0(IAsyncResult ar) in C:\Documents and Settings\mrafeeq\My Documents\Downloads\
SignalR-SignalR-0.5.0-231-g7808c90\SignalR-SignalR-7808c90\SignalR.Client\Http\H
ttpHelper.cs:line 19