Signalr 从服务器调用客户端脚本-信号器

Signalr 从服务器调用客户端脚本-信号器,signalr,Signalr,我正在mvc4 web应用程序中使用SignalR。 我有一个从HUB继承的类 [HubName("Chat")] public class ChatHub : Hub ,IDisconnect { private void CallMessage(string message) { Clients.MessagesRecieved(message); } .... 在我的客户端js文件中,我编写了 $(函数(

我正在mvc4 web应用程序中使用SignalR。 我有一个从HUB继承的类

[HubName("Chat")]
public class ChatHub : Hub ,IDisconnect  
{
      private void CallMessage(string message)
      {
               Clients.MessagesRecieved(message);
      }
      .... 
在我的客户端js文件中,我编写了 $(函数(){ globalChatHub=$.connection.chat

$.extend(globalChatHub, { MessagesRecieved: function (data) {
    alert(data);
}
});
问题是,, 是否可以从my HomeController.cs中的代码调用客户端脚本“MessagesReceived函数”

让我们这样说:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        // this is a test
        ChatHub  h = new ChatHub();
        h.CallMessage("hellow");

    }
当然, 您可以用调用客户端代码的相同方式调用它:

//Define the client method:
globalChatHub.hello = function {alert('hello');}
在服务器代码中,只需编写:

ChatHub  h = new ChatHub();
        h.Client.hello();
方法的名称区分大小写

更多信息请访问此链接

当然, 您可以用调用客户端代码的相同方式调用它:

//Define the client method:
globalChatHub.hello = function {alert('hello');}
在服务器代码中,只需编写:

ChatHub  h = new ChatHub();
        h.Client.hello();
方法的名称区分大小写


此链接中的更多信息

您可以使用以下代码在
Hub
上下文中为您的
ChatHub
创建一个链接:

var context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();

试试看。希望这有帮助。

您可以使用以下代码在
Hub
上下文中创建您的
ChatHub

var context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();

试试看。希望这有帮助。

在mvc控制器中,我使用以下代码调用hub中的方法

在hub实现中,我更喜欢让实现调用hub中的客户机,以使代码具有内聚性。

public void Echo(字符串sessionId,动态数据)
{
var context=GlobalHost.ConnectionManager.GetHubContext();
context.Clients.All.ClientSideMethod(..)
}

在mvc控制器中,我使用以下代码调用hub中的方法

在hub实现中,我更喜欢让实现调用hub中的客户机,以使代码具有内聚性。

public void Echo(字符串sessionId,动态数据)
{
var context=GlobalHost.ConnectionManager.GetHubContext();
context.Clients.All.ClientSideMethod(..)
}

你真的是救命恩人!非常感谢,正是我想要的。:)你真的是救命恩人!非常感谢,正是我想要的。:)