通过 Azure WebRole 运行() 函数调用时客户端未收到 SignalR 消息
SignalR messages not received in client when called via Azure WebRole Run() function
我正在尝试通过 SignalR 从我的 WebRole 向客户端发送一条消息,但它没有出现。当我测试从 Controller 调用它时,它看起来很好,但是当从 运行() 函数调用时,它似乎没有传递给客户端。
public override void Run()
{
processingQueueClient.OnMessage((message) =>
{
message.Complete();
MainHub.Send("Test 1");
});
completedEvent.WaitOne();
}
namespace MainWebRole
{
public class MainHub : Hub
{
public static void Send(string message)
{
var context = GlobalHost.ConnectionManager.GetHubContext<MainHub>();
context.Clients.All.broadcastMessage(message);
}
}
}
<script>
$(function () {
var chat = $.connection.mainHub;
chat.client.broadcastMessage = function (message) {
var notificationText = "<div><button type=\"button\" class=\"btn btn-default\" onclick=\"onClickClearComplete()\">Clear Complete</button></div><div class=\"spacer10\"></div><div><table class=\"table table-bordered\">";
notificationText += "<tr><td nowrap><span><i class=\"fa fa-pause\"></i> Pending \"" + message + "\"</span></td></tr>";
notificationText += "</table></div>";
$("#statusText").html(notificationText);
};
$.connection.hub.start().done(function () {
});
});
</script>
请尝试通过以下步骤运行您的 signalR 发送功能:
1) Install-Package Microsoft.AspNet.SignalR.Client
2) 在 运行 函数中的 Azure Web 角色中编写以下代码。
HubConnection _hub = new HubConnection("http://localhost:1942");
var _proxy = _hub.CreateHubProxy("MainHub");
if (_hub.State == ConnectionState.Disconnected)
{
await _hub.Start();
}
await _proxy.Invoke("Send", "jambor");
http://localhost:1942
是您的 SignalR 服务器站点。
MainHub
是您的 SignalR 中心 class 名称
Send
是您在 MainHub 中的功能 class。
我正在尝试通过 SignalR 从我的 WebRole 向客户端发送一条消息,但它没有出现。当我测试从 Controller 调用它时,它看起来很好,但是当从 运行() 函数调用时,它似乎没有传递给客户端。
public override void Run()
{
processingQueueClient.OnMessage((message) =>
{
message.Complete();
MainHub.Send("Test 1");
});
completedEvent.WaitOne();
}
namespace MainWebRole
{
public class MainHub : Hub
{
public static void Send(string message)
{
var context = GlobalHost.ConnectionManager.GetHubContext<MainHub>();
context.Clients.All.broadcastMessage(message);
}
}
}
<script>
$(function () {
var chat = $.connection.mainHub;
chat.client.broadcastMessage = function (message) {
var notificationText = "<div><button type=\"button\" class=\"btn btn-default\" onclick=\"onClickClearComplete()\">Clear Complete</button></div><div class=\"spacer10\"></div><div><table class=\"table table-bordered\">";
notificationText += "<tr><td nowrap><span><i class=\"fa fa-pause\"></i> Pending \"" + message + "\"</span></td></tr>";
notificationText += "</table></div>";
$("#statusText").html(notificationText);
};
$.connection.hub.start().done(function () {
});
});
</script>
请尝试通过以下步骤运行您的 signalR 发送功能:
1) Install-Package Microsoft.AspNet.SignalR.Client
2) 在 运行 函数中的 Azure Web 角色中编写以下代码。
HubConnection _hub = new HubConnection("http://localhost:1942");
var _proxy = _hub.CreateHubProxy("MainHub");
if (_hub.State == ConnectionState.Disconnected)
{
await _hub.Start();
}
await _proxy.Invoke("Send", "jambor");
http://localhost:1942
是您的 SignalR 服务器站点。
MainHub
是您的 SignalR 中心 class 名称
Send
是您在 MainHub 中的功能 class。