2

你好朋友我已经使用信号 R 开发了许多聊天应用程序,它工作得非常好。但是我在开发一件事时遇到了一个问题..例如向接收者输入消息:- 有两个用户在线用户 x 和用户 y.now 当用户 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 作为第二个参数传递以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 回答