特定のクライアントにメッセージを送信できるようにしたいのですが、動作するコードはありますが、ページの読み込み/更新ごとにクライアント ID が変更されるため、ユーザーを識別する方法が見つからないため、それに依存することはできません。接続にクエリ文字列を追加しようとしましたが、同じコンテキストのクエリ文字列しか見つかりませんでした。
これは私のハブであり、 send メソッド内で、メッセージを送信する時点で、送信された ID を特定の接続 ID に一致させたいと考えています。
public class Chat : Hub
{
public string addMsg()
{
return "";
}
public void Send(string message, string id)
{
Clients.Client(Context.ConnectionId).receiveMessage(message);
}
}
これが私のクライアントコードです。メッセージを送信する人のIDをサーバーのsendメソッドに渡し、他の接続ユーザーのクエリ文字列値を使用して、送信しているIDと一致させたいと考えています。
var chat = $.connection.chat;
chat.client.receiveMessage = function (message) {
alert("Received from server: " + message);
};
chat.addMsg = function (message) {
};
$("#sendMessage").click(function () {
chat.server.send($('#newMessage').val(), 6);
});
$.connection.hub.qs = "id=1";
$.connection.hub.start().done(function () {
var myClientId = $.connection.hub.id;
var qs = $.connection.hub.qs;
});
私の質問が理にかなっているといいのですが、しばらくの間これを解読しようとしています。以下は、私が今いる場所にたどり着くために使用した記事のいくつかへのリンクです。パズルの最後のピースが欠けているだけです。私に気楽に行ってください:)
http://weblogs.asp.net/davidfowler/archive/2012/11/11/microsoft-asp-net-signalr.aspx