SignalR Web 应用程序从控制台中心接收消息
SignalR Web Application receives messages from Console Hub
我设置了一个由控制台应用程序(my messages Hub)和 Web 应用程序(my messages receiver)组成的小项目.
这个想法是控制台应用程序监听 RabbitMQ 队列,每次收到消息时,它都会将消息广播到所有连接的 SignalR 客户端。
我这样初始化控制台应用程序:
// 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 class 和 Hub Class 如下:
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
如何从控制台应用程序向所有客户端广播消息?
答案 1 您应该将客户端方法定义为 chat.client.someMethod = function(someParams)
。在您的情况下,此客户端方法是 chat.client.addMessage = function (name, message) {}
.
答案 2 如果您想要从 .NET 应用程序在不连接到您的集线器的情况下广播一些消息,那么您可以这样做:GlobalHost.ConnectionManager.GetHubContext<MyHub>().Clients.All.addMessage(/*method params*/)
.
我设置了一个由控制台应用程序(my messages Hub)和 Web 应用程序(my messages receiver)组成的小项目. 这个想法是控制台应用程序监听 RabbitMQ 队列,每次收到消息时,它都会将消息广播到所有连接的 SignalR 客户端。
我这样初始化控制台应用程序:
// 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 class 和 Hub Class 如下:
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 如何从控制台应用程序向所有客户端广播消息?
答案 1 您应该将客户端方法定义为 chat.client.someMethod = function(someParams)
。在您的情况下,此客户端方法是 chat.client.addMessage = function (name, message) {}
.
答案 2 如果您想要从 .NET 应用程序在不连接到您的集线器的情况下广播一些消息,那么您可以这样做:GlobalHost.ConnectionManager.GetHubContext<MyHub>().Clients.All.addMessage(/*method params*/)
.