2

こんにちは、シグナル R を使用して多対多のチャット アプリケーションを開発しましたが、完全に正常に動作しています。ユーザーy.現在、ユーザーxがメッセージを入力しているときに..ユーザーyウィンドウに表示されるはずです..「ユーザーxがメッセージを入力しています..」しかし、このメッセージをグループに送信すると、両方の画面に表示されます..したい受信者の画面のみに表示する

これがコードです

public void Send(string message, string groupName, string Istypingmessage)
{
    if (Clients != null)
    {

        string[] words = message.Split(':');
        string trim = words[0].Trim();
        string imagetag = "<img width=\"32px\" height=\"32px\" src=\"userimages/" + trim + ".jpg" + "\"" + "></img> ";
        Clients.Group(groupName).addMessage(message, groupName, words[0], imagetag, Istypingmessage);


    }
}

ここで、message=0 と入力すると通常のメッセージを意味し、1 は「ユーザー x がそのメッセージを入力しています」を意味します。これはキー押下イベントです。

 //keypress event of textbbox here..
        $(".ChatText").live('keyup', function () {
            if($(".ChatText").val().length > 0)
            {
               var messsage_typing=$("#hdnUserName").val() + " is typing...";
               var strGroupName = $(this).parent().attr('groupname');
                if (typeof strGroupName !== 'undefined' && strGroupName !== false)
                    chat.server.send($("#hdnUserName").val() + ' : ' + messsage_typing, $(this).parent().attr('groupname'),"1");

            }
        });
        //end of keypress

これは追加メッセージコードです

  chat.client.addMessage = function (message, groupName,recievername,imagetag,Istypingmessage) {

            if ($('div[groupname=' + groupName + ']').length == 0) {
                var chatWindow = $("#divChatWindow").clone(true);
                $(chatWindow).css('display', 'block');
                $(chatWindow).attr('groupname', groupName);

                $("#chatContainer").append(chatWindow);
                //buggy code do not delete..
                //remove all previous li
                $('div[groupname=' + groupName + ']').find('ul li').remove();
                //replace header tag with new name
                $('div[groupname=' + groupName + ']').find('a').html(recievername);
                $("#chatContainer").draggable();
                $("#chatContainer").css('cursor','move');
            }
            if(Istypingmessage=="0")
            {
                 var stringParts = message.split(":");
                 var username = stringParts[0];
                 var message = stringParts[1];
                 //this code is for continous message sent
                 var lastliusername=$('div[groupname=' + groupName + '] ul li').eq(-2).find('div.designnone').html();               
                 if(lastliusername!=null && $.trim(username)==$.trim(lastliusername))
                 {
                    $('div[groupname=' + groupName + '] ul li').eq(-2).find('div.designmessage').append("<span class='spansameuser'>" + message + "</span>");
                    //end of this code is for continous message sent
                 }
                 else 
                 {
                    $('div[groupname=' + groupName + ']').find('ul').append("<li><div class='design'>" + imagetag + "</div><div class='designnone'> " + username + "</div><div class='designmessage'> " + message + " </div></li><li class='cleardivbetweenmsg'></li>");
                 }

             }
             else 
             {
                    $('div[groupname=' + groupName + ']').find('ul').append("<li><span>Hellos</span></li>");
             }
             $("#messages").scrollTop($("#messages")[0].scrollHeight);
        };

両方の画面ではなく受信者に入力メッセージを表示するにはどうすればよいですか..助けてください..要するに、グループの送信者ではなく、グループの受信者にのみメッセージを送信したい ありがとう

4

1 に答える 1

3

送信者を除くグループ内のすべてのクライアントにメッセージを送信する場合は、次を使用できますClients.OthersInGroup

 Clients.OthersInGroup(groupName).addMessage(/*...*/);

これは、送信者の接続 ID を 2 番目のパラメーターとして渡してClients.Group、除外された接続 ID にすることと同じです。

 Clients.Group(groupName, Context.ConnectionId).addMessage(/*...*/);

のメソッド シグネチャClients.Groupは次のとおりpublic dynamic Group(string groupName, params string[] excludeConnectionIds)です。

于 2013-04-30T05:01:35.193 に答える