【问题标题】:SignalR how to call 2 different method in 1 Hub?SignalR如何在1个集线器中调用2种不同的方法?
【发布时间】:2013-07-31 15:54:07
【问题描述】:

所以我在 1 个集线器中有 2 种方法:

public class ChatHub : Hub
{
    public void SendMessage(string name, string message)
    {
        Clients.All.AddMessage(name, message);
    }

    public void SendAnnounce(string name)
    {
        Clients.Others.AddMessage(name);
    }
}

如何在客户端 javascript 的 1 个集线器中正确使用 2 种方法?

我在 javascript 中有这个,

对于 SendMessage(string name, string message) hub 方法:

            var message = $("#txtMessage").val();
            var userid = $("#lblUsername").html();
            chat.client.addMessage = function (frm, msg) {
                $messages.append("[" + frm + "] " + msg);
            }

调用:

            chat.server.sendMessage(userid, input);

对于 SendAnnounce(string name) hub 方法:

            chat.client.addMessage = function (frm) {
                $announcement.append("<div>test</div>");
            }

调用:

            var userid = $("#txtUsername").val();
            chat.server.announcement(userid);

但它不起作用(服务器只是使用我的案例公告中的最后一种方法)。
只有当我制作 2 个集线器并将每种方法放在不同的集线器中时它才有效,然后为每个集线器创建不同的变量,如下所示:

                //Create Hub on Air
            var chat = $.connection.chatHub;
            var chat2 = $.connection.announcementHub;

然后使用带有“chat”变量的 1 种方法和带有“chat2”变量的第二种方法。然后它就可以工作了。像这样:

            chat.client.addMessage = function (frm, msg) {
                $messages.append("[" + frm + "] " + msg);
            }
            chat2.client.addMessage = function (frm) {
                $announcement.append("<div> test</div>");
                });
            }

我不明白什么?

【问题讨论】:

    标签: c# asp.net signalr


    【解决方案1】:

    在 JavaScript 中,你不能真正拥有方法重载。您所做的是首先将addMessage 声明为具有两个参数的函数,然后用具有一个参数的函数覆盖它。所以最后一个正在使用

    使用名称不同的方法,例如addMessageaddAnnouncement 或使用单一方法并检查是否定义了第二个参数。如果不是,那么它就是一个公告。

    【讨论】:

      【解决方案2】:

      我实际上得到了这个工作!在一个实例中调用两种方法。我不明白你为什么要创建两个实时连接?你永远只需要一个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        • 2021-09-06
        • 1970-01-01
        • 1970-01-01
        • 2018-12-18
        相关资源
        最近更新 更多