web-dev-qa-db-ja.com

SignalRを使用してグループに参加する方法

私はSignalR(本日開始)を初めて使用します。接続されているすべてのクライアントにメッセージを送信するのは非常に簡単ですが、今はグループに送信したいだけです。クライアント側で参加する方法についての簡単なドキュメントが見つかりません。誰かが助けてくれるなら、どうすればjavascript側のグループに簡単に参加できますか。助けてくれてありがとう。

public class EventHub : Hub
{
    public void SendNewMedia(MediaInfoViewModel model,Guid eventId)
    {
        Clients.Group(eventId.ToString()).setupmedia(model);
    }
}
//Controller that is sending client new data
var eventHub = GlobalHost.ConnectionManager.GetHubContext<EventHub>();
              var result = eventHub.Clients.Group(eventId.ToString()).setupmedia(eventViewer);

//Finally the javascript. Not sure how to setup just for a group
$(function () {
    var event = $.connection.eventHub;
    event.client.setupmedia = function (newMedia) {

        $('#photolist').prepend('<li><img src="' + newMedia.MediaUrl + '" class="img-polaroid span2"/></li>');
    };
    $.connection.hub.start(function() {
        event.server.create(eventID);//I know this is wrong but not sure how to connect
    }).done(function () {
        alert('conntected. Ready to retrieve data!');
    });
});
15
user516883

できません。 javascriptからグループに参加できる場合は、誰でもあなたのコードを使用して、セキュリティを破るグループに参加できます。本当にそれを行う必要がある場合は、サーバー側で、グループ名をパラメーターとして受け取り、クライアントをグループに追加するメソッドを作成します。

public void JoinGroup(string groupName)
{
    this.Groups.Add(this.Context.ConnectionId, groupName);
}

その後、JSからそのように呼び出します

eventHub.server.joinGroup("my-awsm-group");
30

(私がしたように)今この質問に出くわした場合に備えて、グループをサポートするためにAzure関数を実装する方法の例を次に示します。

https://docs.Microsoft.com/en-us/Azure/azure-functions/functions-bindings-signalr-service#2x-c-group-management-output-examples

0
JCisar