2015-12-30 69 views
2

我已經安裝一個小項目由一個控制檯應用程序組成(我的信息樞紐)和Web應用程序(我的郵件接收器)消息。 這個想法是,控制檯應用程序監聽RabbitMQ隊列,並且每次收到消息時,都會將消息廣播給所有連接的SignalR客戶端。SignalR的Web應用程序接收到來自控制檯樞紐

我初始化控制檯應用程序以這種方式:

// 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(); 
} 

然後,我有我的啓動類和我的樞紐類別如下:

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 從控制檯應用程序,我該如何將消息廣播到所有的客戶端?

回答

2

答案1您應該將客戶端方法定義爲chat.client.someMethod = function(someParams)。在你的情況下,這個客戶端方法是chat.client.addMessage = function (name, message) {}

回答2如果您希望在不通過.NET應用程序連接到集線器的情況下廣播一些消息,則可以這樣做:GlobalHost.ConnectionManager.GetHubContext<MyHub>().Clients.All.addMessage(/*method params*/)

+0

正是我在找的東西。我無法在文檔中找到它,謝謝 – Raffaeu