Signalr 客户端代码未调用 HUb
Signal R client code is not invoking the HUb
我正在使用 Visual studio 2010 和 jquery signal r 1.1.4 发送通知,就像我们在 facebook 中一样。
以下是使用的 Hub 方法
public class BroadcastMessage:Hub
{
public void BroadcastNotifications(string message)
{
Utility.AddNotification(message); //to save data to database
int UnreadCount = Utility.getUnreadMessageCount(); //get the unread count
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<BroadcastMessage>();
context.Clients.All.receiveNotification(message, UnreadCount);
}
public void SendMessages()
{
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<BroadcastMessage>();
context.Clients.All.updateMessages();
}
}
我有文本 bx 以输入通知消息和发送按钮的部分视图是
@模型MyProject.Models.Notification
@
using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Notification</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Message)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Message)
@Html.ValidationMessageFor(model => model.Message)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.LogonID)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LogonID)
@Html.ValidationMessageFor(model => model.LogonID)
</div>
<p>
<input type="button" id="broadcastNotification" value="Send" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
<script src="~/Scripts/jquery-1.12.0.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.signalR-1.1.4.js" type="text/javascript"></script>
<script src="~/signalr/hubs"></script>
<script type="text/javascript">
$(function () {
$.connection.hub.logging = true;
var proxy = $.connection.broadcastMessage;
$.connection.hub.start().done(function () {
$('#broadcastNotification').click(function () {
proxy.server.broadcastNotifications($("#Message").val()).done(function () {
proxy.server.sendMessages();
});
});
});
});
</script>
}
Global.asax 文件是
protected void Application_Start()
{
//To register the default Hubs route
RouteTable.Routes.MapHubs();
}
这里我的 signal r hub 方法没有在点击发送按钮时被触发。
我试过 http://localhost:XXXX/signalr 那里出现错误 "Protocol error: Unknown transport." 谁能告诉我我在这里犯了什么错误。
我建议您在启动时添加一些日志记录:
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
var hubConfiguration = new HubConfiguration { EnableDetailedErrors = true };
ConfigureAuth(app);
app.MapSignalR(hubConfiguration);
}
}
我正在使用 Visual studio 2010 和 jquery signal r 1.1.4 发送通知,就像我们在 facebook 中一样。 以下是使用的 Hub 方法
public class BroadcastMessage:Hub
{
public void BroadcastNotifications(string message)
{
Utility.AddNotification(message); //to save data to database
int UnreadCount = Utility.getUnreadMessageCount(); //get the unread count
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<BroadcastMessage>();
context.Clients.All.receiveNotification(message, UnreadCount);
}
public void SendMessages()
{
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<BroadcastMessage>();
context.Clients.All.updateMessages();
}
}
我有文本 bx 以输入通知消息和发送按钮的部分视图是 @模型MyProject.Models.Notification
@
using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Notification</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Message)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Message)
@Html.ValidationMessageFor(model => model.Message)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.LogonID)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LogonID)
@Html.ValidationMessageFor(model => model.LogonID)
</div>
<p>
<input type="button" id="broadcastNotification" value="Send" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
<script src="~/Scripts/jquery-1.12.0.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.signalR-1.1.4.js" type="text/javascript"></script>
<script src="~/signalr/hubs"></script>
<script type="text/javascript">
$(function () {
$.connection.hub.logging = true;
var proxy = $.connection.broadcastMessage;
$.connection.hub.start().done(function () {
$('#broadcastNotification').click(function () {
proxy.server.broadcastNotifications($("#Message").val()).done(function () {
proxy.server.sendMessages();
});
});
});
});
</script>
}
Global.asax 文件是
protected void Application_Start()
{
//To register the default Hubs route
RouteTable.Routes.MapHubs();
}
这里我的 signal r hub 方法没有在点击发送按钮时被触发。 我试过 http://localhost:XXXX/signalr 那里出现错误 "Protocol error: Unknown transport." 谁能告诉我我在这里犯了什么错误。
我建议您在启动时添加一些日志记录:
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
var hubConfiguration = new HubConfiguration { EnableDetailedErrors = true };
ConfigureAuth(app);
app.MapSignalR(hubConfiguration);
}
}