新しいサーバー コールバック関数を追加しようとするたびに、コールバックを $.connection サーバー コールバック リストに表示できないようです。
SignalR が生成し、サーバー コールバックの最新のリストを使用してクライアントに送信する JavaScript を更新するには、どうすればよいですか。
クライアントがアプリを呼び出して再構築し、Google Chrome の新しいインスタンスを起動するためのサーバー コールバックを追加するだけでよいと思います。新しく追加されたサーバー コールバックは、クライアントで使用可能なコールバックのリストに含まれます。
たとえば、これはまさに私がやったことです。
1.) クライアントがグループに参加すると、全員に通知されます。
public override Task OnConnected()
{
string pid = this.Context.QueryString["pid"],
uid = this.Context.QueryString["uid"],
ispro = this.Context.QueryString["ispro"];
Groups.Add(this.Context.ConnectionId, pid);
return Clients.Group(pid).joined(new cmsg(Context.ConnectionId, UtilCommon.GetUserMini(new Guid(uid), bool.Parse(ispro))));
}
2.) クライアントでは、結合された関数がサーバーから呼び出されます
this.collaborateHub.client.joined = function (cmsg) {
//
that.chatBox.addAttendee(cmsg);
//let the new attendee know about you
if (cmsg.cnnid !== that.chatBox.getMeAttendee().cnnid) {
that.chatBox.getMeAttendee().newbieid = cmsg.cnnid;
debugger
this.server.addMeNewbie(that.chatBox.getMeAttendee());
};
};
3.) 誰かが参加し、それが現在開いているウィンドウのユーザーではなかった場合、それは、参加したばかりの誰かが私以外の誰かであることを意味するので、サーバーにコールバックし、新しく参加したユーザーに私を追加するように通知する必要がありますユーザーリストに。データベース内の特定のグループに現在サインオンしているユーザーについていく必要はなく、グループのサインオンしているすべてのクライアントを分散データベースとして使用し、それらに自分の情報を管理させています。
そのため、addMeNewbie という名前のサーバー コールバックを呼び出す必要があります。ただし、このコールバック関数はリストでは使用できません。
public Task addMeNewbie(cmsg cmsg) {
return Clients.Client(cmsg.newbieid).addCurrAttendee(cmsg);
}
これは、デバッグ モードでのクライアント側のスナップショットです。
4.) 最後に、新しく参加したグループ メンバーが現在のグループ メンバーのリストを更新できるように、サーバーが呼び出す必要があるクライアント側のコールバックを次に示します。
this.collaborateHub.client.addCurrAttendee = function (cmsg) {
debugger
that.chatBox.addAttendee(cmsg);
};
私は自分が望むだけ多くのサーバーコールバックを追加できるはずであり、それらはGoogle Chromeの新しいインスタンスの次のビルドと再起動に表示されるべきだと思います。ただし、そうではありません。クライアント側の利用可能なサーバーコールバックに表示するために、新しく追加されたサーバーコールバックを取得するには何をする必要がありますか?これは私にはそうではありませんが、私はこれが現金の問題か何かだと思っていますか?
利用可能な唯一のコールバックは、提供されたスナップショットに示されているものです。現時点では、スナップショットに表示されるコールバックと表示されないコールバックの 2 つしかありません。