【问题标题】:SignalR Web Application receives messages from Console HubSignalR Web 应用程序从控制台集线器接收消息
【发布时间】:2016-04-04 07:26:10
【问题描述】:

我设置了一个由控制台应用程序(我的消息集线器)和一个 Web 应用程序(我的消息接收器)组成的小项目。 这个想法是控制台应用程序侦听 RabbitMQ 队列,每次收到消息时,它都会将消息广播到所有连接的 SignalR 客户端。

我是这样初始化Console App的:

// start Mass Transit Bus
var busControl = BuildBus();
busControl.Start();

// Start SignalR
string url = "http://localhost:9090";
using (WebApp.Start(url))
{
    Console.WriteLine("SignalR Server running on {0}", url);
    Console.ReadLine();
}

然后我的 Startup 类和 Hub 类如下:

class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseCors(CorsOptions.AllowAll);
        app.MapSignalR();
    }
}
public class MyHub : Hub
{
    public void Send(string name, string message)
    {
        Clients.All.addMessage(name, message);
    }
}

现在是我迷路的地方。

问题 1 我想从我的 Web 应用程序接收消息,所以我初始化代理然后?

<script type="text/javascript">
        $(function () {
        //Set the hubs URL for the connection
            $.connection.hub.url = "http://localhost:9090/signalr";

            // Declare a proxy to reference the hub.
            var chat = $.connection.myHub;

            // Declare a Message handler

        });
</script>

问题 2 如何从控制台应用程序向所有客户端广播消息?

【问题讨论】:

    标签: c# asp.net signalr console-application


    【解决方案1】:

    答案 1 您应该将客户端方法定义为 chat.client.someMethod = function(someParams)。在您的情况下,此客户端方法是 chat.client.addMessage = function (name, message) {}

    答案 2 如果您想在不连接到您的集线器的情况下从 .NET 应用程序广播一些消息,那么您可以这样做:GlobalHost.ConnectionManager.GetHubContext&lt;MyHub&gt;().Clients.All.addMessage(/*method params*/)

    【讨论】:

    • 正是我想要的。我在文档中找不到它,谢谢
    猜你喜欢
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 2017-04-24
    • 2019-10-12
    • 2021-10-18
    • 2013-05-03
    • 2017-01-28
    相关资源
    最近更新 更多