通过Azure WebRole Run()函数调用时,客户端未收到SignalR消息

时间:2017-01-01 20:36:55

标签: c# azure signalr

我正在尝试通过SignalR从我的WebRole向客户端发送消息,但它没有出现。当我测试从Controller调用它时看起来很好,但是当从Run()函数调用它时,它似乎没有将它转交给客户端。

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>&nbsp;Pending \"" + message + "\"</span></td></tr>";
                notificationText += "</table></div>";
                $("#statusText").html(notificationText);
            };

            $.connection.hub.start().done(function () {
            });
        });
    </script>

1 个答案:

答案 0 :(得分:1)

请尝试通过以下步骤运行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中心类名称

Send是您在MainHub类中的函数。