从另一个控制器呼叫信号器

Alv*_*vin 13 c# asp.net-mvc-4 signalr

我有一个ChatHub向客户端发送消息:

public class ChatHub : Hub
{
    public void Send(string name, string message)
    {
        Clients.All.addNewMessageToPage(name, message);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何调用Send函数将消息广播到所有客户端another controller

我试过这个:

[HttpPost]
public void Post(Chat chat)
{
    var hubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
    hubContext.Clients.All.Send(chat.Name, chat.Message);
}
Run Code Online (Sandbox Code Playgroud)

Lin*_*Lin 24

你需要调用addNewMessageToPage你的Post动作方法.

var hubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
hubContext.Clients.All.addNewMessageToPage(chat.Name, chat.Message);
Run Code Online (Sandbox Code Playgroud)

然后在你的JS文件中:

var chatHub = $.connection.chatHub;

chatHub.client.addNewMessageToPage= function (name, message) {
    //Add name and message to the page here
};
$.connection.hub.start();
Run Code Online (Sandbox Code Playgroud)