SignalR 消息未毫无错误地发送到客户端
SingalR message not sent to the client without any errors
我有一个集线器 class:
public class OrderHub : Hub
{
public override Task OnConnected()
{
Clients.Caller.orderMessage("New connection");
return base.OnConnected();
}
public static void SendOrderMessage(string msg)
{
var hubContext = GlobalHost.ConnectionManager.GetHubContext<OrderHub>();
hubContext.Clients.All.orderMessage(msg);
}
}
正在调用静态方法的事件处理程序:
public async Task Handle(IOrderProcessedEvent message, IMessageHandlerContext context)
{
// Here we could write a code with SignalR to notify the page about successful process
while (true)
{
await Task.Delay(1000);
//orderHub.OrderMessage("Order processed successfully");
OrderHub.SendOrderMessage("Order processed successfully");
}
}
还有一个应该记录消息的简单 JavaScript 代码(这是一个非常简化的示例):
@section scripts{
<script src="~/Scripts/jquery-1.9.1.min.js"></script>
<script src="~/Scripts/jquery.signalR-2.4.1.min.js"></script>
<script src="/signalr/hubs"></script>
<script language="javascript">
$(function () {
var hub = $.connection.orderHub;
console.log("hub initiated");
hub.orderMessage = function (msg) {
console.log(msg);
};
$.connection.hub.start();
});
</script>
缺少一些东西,因为从未调用过该函数,不是从 OnConnected 调用,也不是从静态方法调用。
console.log("hub initiated");
行被打印,hub 变量有效,但实际的 function(msg)
永远不会被调用。
我错过了什么?
你错过了"client":
hub.client.orderMessage = function (msg) {
console.log(msg);
};
我有一个集线器 class:
public class OrderHub : Hub
{
public override Task OnConnected()
{
Clients.Caller.orderMessage("New connection");
return base.OnConnected();
}
public static void SendOrderMessage(string msg)
{
var hubContext = GlobalHost.ConnectionManager.GetHubContext<OrderHub>();
hubContext.Clients.All.orderMessage(msg);
}
}
正在调用静态方法的事件处理程序:
public async Task Handle(IOrderProcessedEvent message, IMessageHandlerContext context)
{
// Here we could write a code with SignalR to notify the page about successful process
while (true)
{
await Task.Delay(1000);
//orderHub.OrderMessage("Order processed successfully");
OrderHub.SendOrderMessage("Order processed successfully");
}
}
还有一个应该记录消息的简单 JavaScript 代码(这是一个非常简化的示例):
@section scripts{
<script src="~/Scripts/jquery-1.9.1.min.js"></script>
<script src="~/Scripts/jquery.signalR-2.4.1.min.js"></script>
<script src="/signalr/hubs"></script>
<script language="javascript">
$(function () {
var hub = $.connection.orderHub;
console.log("hub initiated");
hub.orderMessage = function (msg) {
console.log(msg);
};
$.connection.hub.start();
});
</script>
缺少一些东西,因为从未调用过该函数,不是从 OnConnected 调用,也不是从静态方法调用。
console.log("hub initiated");
行被打印,hub 变量有效,但实际的 function(msg)
永远不会被调用。
我错过了什么?
你错过了"client":
hub.client.orderMessage = function (msg) {
console.log(msg);
};