1
任何人都可以幫助我理解SignalR。 HubConnection不從服務器調用客戶端方法
以下代碼中的錯誤是客戶端方法不是從使用SignalR的服務器方法調用的。
我可以在點擊廣播按鈕時調用客戶端方法。 而且,當我從控制檯應用程序運行selfInvoke代碼時,事件被觸發。
服務器類駐留在不同程序集的CustomEvent處理程序中。
代碼聊天集線器如下:
namespace MySample.Handler
{
[HubName("chat")]
public class Chat: Hub
{
public void Send(string message)
{
Clients.addMessage(message);
// I tried this code as well:
// IHubContext context = GlobalHost.ConnectionManager.GetHubContext<Chat>();
// context.Clients.addMessage("Hello world");
}
}
}
調用聊天轂的源代碼如下:
namespace MySample.Handler
{
public static class SelfInvoke
{
public static void OnEvent()
{
var hubConnection = new HubConnection("http://localhost:48994");
var chat = hubConnection.CreateProxy("chat");
hubConnection.Start().Wait();
string message1 = "Hai from OnEvent Handler!!!";
chat.Invoke("Send", message1).Wait();
}
}
}
的Index.aspx
<script src="Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="Scripts/jquery.signalR-0.5.2.min.js" type="text/javascript"></script>
<script src="/signalr/hubs" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
var chat = $.connection.chat;
chat.addMessage = function (message) {
$('#messages').append('<li>' + message + '</li>');
};
$("#broadcast").click(function() {
chat.send($('#msg').val());
});
$.connection.hub.start();
});
</script>
<input type="text" id="msg" />
<input type="button" id="broadcast" value="broadcast" />
<ul id="messages">
</ul>
的Index.aspx .cs [代碼後面的代碼..]
protected void Page_Load(object sender, EventArgs e)
{
SelfInvoke.OnEvent();
}
任何幫助,高度讚賞。
問候 文斯
的JavaScript需要運行並裝載到接收消息。在頁面完全加載並連接到集線器後,您是否發送了消息? – davidfowl 2012-07-13 06:30:32