3

ハブではなく、SignalR/PersistentConnectionを使用しています。

サーバーからクライアントにメッセージを送信したい。送信するクライアントIDを持っていますが、サーバーからクライアントにメッセージを送信するにはどうすればよいですか?

たとえば、サーバーで何らかのイベントが発生した場合、特定のユーザーに通知を送信する必要があります。

何か案は?

4

3 に答える 3

4

githubページには、PersistentConnectionsを使用してこれを行う方法が示されています。

public class MyConnection : PersistentConnection {
    protected override Task OnReceivedAsync(string clientId, string data) {
        // Broadcast data to all clients
        return Connection.Broadcast(data);
    }
}

Global.asax

using System;
using System.Web.Routing;
using SignalR.Routing;

public class Global : System.Web.HttpApplication {
    protected void Application_Start(object sender, EventArgs e) {
        // Register the route for chat
        RouteTable.Routes.MapConnection<MyConnection>("echo", "echo/{*operation}");
    }
}

次に、クライアントで:

$(function () {
    var connection = $.connection('echo');

    connection.received(function (data) {
        $('#messages').append('<li>' + data + '</li>');
    });

    connection.start();

    $("#broadcast").click(function () {
        connection.send($('#msg').val());
    });
});
于 2011-10-01T08:47:23.550 に答える
1

サーバー側のヘルプのAddToGroup関数である可能性があります

クライアントを別のチャネルに配置します

public bool Join(string channel)
{
    AddToGroup(channel.ToString()).Wait();
    return true;
}

その後、彼らは別のチャネルでメッセージを送信することができます

public void Send(string channel, string message)
{

    String id = this.Context.ClientId;

    Clients[channel.ToString()].addMessage(message);

}
于 2011-10-18T07:54:29.940 に答える
0
using SignalR;
using SignalR.Hosting.AspNet;
using SignalR.Infrastructure;

public class MyConnection : PersistentConnection
{
}

public class Notifier
{
  public void Notify(string clientId, object data) {
    MyConnection connection = (MyConnection) AspNetHost.DependencyResolver
      .Resolve<IConnectionManager()
      .GetConnection<MyConnection>();

    connection.Send(clientId, data);
  }
}

https://github.com/SignalR/SignalR/wiki/PersistentConnection

于 2012-04-10T12:20:15.600 に答える