私はSignalRの初心者です。SignalR に基づいて基本的なチャット アプリケーションを作成しました。私が直面している問題は、特定のクライアントとメッセージを送信したユーザーにメッセージを送信したいということです。これを行う方法?
特定のクライアントにメッセージを送信するには、次のようにできることを知っています。
Clients.Client(Context.ConnectionId).addMessage(data);
メッセージを送信したクライアントではなく、指定されたクライアントにのみメッセージを送信します。
メッセージが指定されたユーザーに送信されたという誤った信念を与える jQuery を使用して、ユーザー自体にメッセージを追加することもできます。やりたくないこと。
PS: ここで使えdone()
ますか? はいの場合、説明してください。
編集:
.js ファイル
txtMsg.keypress(function (e) {
chat.server.send(chatUsername, selectedUsername, txtMsg.val(), showChatName, _invokeChat);
});
chat.client.addMessage = function (chatUsername, message, showChatName, invokeChat) {
if (invokeChat) {
selectedUsername = chatUsername;
_invokeChat = false;
chatTitleName.text("Chat with: " + selectedUsername);
}
if (showChatName) {
//To show Username with the typed message
showMessage.append('<b>' + chatUsername + '</b>' + ': ' + message + '</br>');
}
else {
//To show only typed message, not the username
showMessage.append(' ' + message + '</br>');
}
previousUsername = chatUsername;
//To keep scroll always bottom
showMessage.scrollTop(showMessage[0].scrollHeight);
};
.cs ファイル( Samir hafez の回答を見て変更)
public void Send(string from, string to, string message, bool blnShowChatName, bool blnInvokeChat)
{
string ConnectionID = selectUsername(to);
// Call the addMessage method on all clients
Clients.Client(ConnectionID).addMessage(from, message, blnShowChatName, blnInvokeChat);
if (!from.Equals(to))
{
blnInvokeChat = false;
Clients.Caller.addMessage(from, message, blnShowChatName, blnInvokeChat);
}
}