使用signalr向特定页面广播消息

时间:2013-04-24 14:06:23

标签: asp.net signalr

假设我有论坛,人们发布他们的问题而另一些人发布答案。例如,人物A说一个问题“什么是信号器?”并站在那个页面。其他人也打开那个页面进行回答。如果其他人发布任何答案,那么我希望该答案将在其他用户打开的该页面中显示。假设五个用户打开该页面,其中一个回答,那么五个用户将看到该答案。

通常当我们想要向所有人广播任何消息时,我们会使用类似于服务器端的语法

Clients.All.broadcastMessage(name, message);

所以根据我的上述情况我需要使用哪种语法?

这里有一些我找到的广播消息类型的指南,以下是

// Call send on everyone
        Clients.All.send(message);

        // Call send on everyone except the caller
        Clients.Others.send(message);

        // Call send on everyone except the specified connection ids
        Clients.AllExcept(Context.ConnectionId).send(message);

        // Call send on the caller
        Clients.Caller.send(message);

        // Call send on everyone in group "foo"
        Clients.Group("foo").send(message);

        // Call send on everyone else but the caller in group "foo"
        Clients.OthersInGroup("foo").send(message);

        // Call send on everyone in "foo" excluding the specified connection ids
        Clients.Group("foo", Context.ConnectionId).send(message);

        // Call send on to a specific connection
        Clients.Client(Context.ConnectionId).send(message);

我需要使用哪一个?请解释&感谢。

1 个答案:

答案 0 :(得分:1)

您可以在页面上有一个具有问题ID的div。所以你会有类似的东西:

<div id="theAskedQuestionId"><!-- the answer will be inserted here--></div>

所以例如:

<div id="12345"><!-- the answer will be inserted here--></div>

然后你可以使用jquery将答案注入div。一个例子是:

var messagePublisher = $.connection.yourHubName;

messagePublisher.client.broadcastMessage = function(divId, message){
$(divId).html(message); //note: divId will be something like #12345
};

这将允许您仅向正在查看特定问题的用户显示消息,而不是向查看任何问题的用户广播消息。我认为这就是你要求帮助的。