Есть ли способ исключить Клиента из вызова Clients.method в SignalR? - PullRequest
3 голосов
/ 10 января 2012

Я оцениваю SignalR (который используется с Knockoutjs), чтобы посмотреть, сможем ли мы использовать его для уведомления клиентов о проблемах параллелизма.Обычно пользователь "a" сохраняет запись, а пользователи "b, c, d, e, f, g" получают уведомление.У меня в основном есть пример работы, который уведомляет всех клиентов.Так что я думаю, что я почти на месте.

Я наткнулся на эту ссылку , и это привело меня на текущий путь, по которому я иду.Я также просматривал документацию по Github .

По сути, я хочу исключить одного клиента из вызова Clients.method().Я не вижу способа перебрать клиентов и проверить ClientId.Единственное, что я могу увидеть для достижения этой цели, - это, возможно, взглянуть на использование групп для отслеживания этого, но это показалось немного громоздким, но у меня тоже были проблемы с этим.

Ответы [ 3 ]

9 голосов
/ 11 января 2012

код JavaScript:

<script type="text/javascript">
    $(document).ready(function () {
        var test = $.connection.test;
        $("#btnTest").click(function () {
            test.testMethod();
        });
        test.show = function (text, guid) {
            if (guid != test.guid) //notify all clients except the caller
                alert(text);
        };
        $.connection.hub.start(function () { test.start(); });
    });
</script>

Класс:

public class Test : Hub
{
    public void Start()
    {
        Caller.guid = Guid.NewGuid();
    }

    public void TestMethod()
    {
        Clients.show("test", Caller.guid);
    }
}
3 голосов
/ 13 февраля 2013

Существует также Clients.AllExcept (...), который позволяет исключать определенных людей.

3 голосов
/ 11 февраля 2013

Если вы хотите исключить абонента из вызова метода на стороне клиента, вы можете использовать:

Clients.Others.clientSideMethod();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...