POC用のサンプルsignalRを作成しました。Global.asaxからハブメソッドを呼び出し、文字列値をクライアントに渡したい。私のメッセージハブは:-
[HubName("messageHub")]
public class MessageHub : Hub
{
public static IHubContext context = GlobalHost.ConnectionManager.GetHubContext<MessageHub>();
public void Message()
{
/*
* services and updates the messages
* property on the PushMessage hub
*/
//IHubContext context = GlobalHost.ConnectionManager.GetHubContext<SignalR_Error_Logging.Models.ErrorModel>();
List<GenerateError.Repository.ErrorModel> model = ErrorRepository.GetError();
context.Clients.pushMessages(model[0].ErrorMessage);
}
layout.cshtmlで2つのスクリプトを定義しました
<script type="text/javascript" src="../../Scripts/jquery-1.6.4.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.signalR-0.5.3.js"></script>
私のIndex.htmlは以下の通りです:-
@{
ViewBag.Title = "Receive Error message";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<script src="/signalr/hubs" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
var myHub = $.connection.messageHub;
myHub.pushMessages = function (value) {
console.log('Server called addMessage(' + value + ')');
$("#messages").append("<li>" + value + "</li>");
};
$("#btnMessage").click(function () {
myHub.message();
});
$.connection.hub.start().done(function () { alert("Now connected!"); }).fail(function () { alert("Could not Connect!"); });
});
</script>
<h2>Receive Error Messages</h2>
<ul id="messages"></ul>
<input type="button" id="btnMessage" value="Get Error" />
Global.asaxで私は書いた
SignalR_Error_Logging.SignalRHub.MessageHub hub = new SignalRHub.MessageHub();
hub.Message();
Application_Start();
UI(つまり、Index.cshtml)にメッセージを表示できません。
私が試したこと:-
- アプリケーションをIISとして実行します。
HubContextの作成方法を変更します。
IHubContext _context = GlobalHost.ConnectionManager.GetHubContext<MessageHub>(); context.Clients.notify("Hello world");
if (Clients != null) { Clients.shootErrorMessage(message); this.Clients.shootErrorMessage(message); }
システムの他の場所からのStackoverflowCallingSignalRハブクライアントのリンクを通過しました
何かアドバイス???
Index.htmlでボタンを作成してハブメソッドを呼び出すと、正常に機能します。
私の質問を適切に組み立てなかったことをお詫びします!!