2013-04-30 2 views
2

Привет, друзья. Я разработал много для многих приложений чата с использованием сигнала R, он отлично работает. Но я получаю одну проблему при разработке одной вещи ... это типичное сообщение для приемника: - есть два пользователя онлайн-пользователя x и пользователь y.now, когда пользователь x набирает сообщение. В окне пользователя он должен появиться .. «пользователь x набирает сообщение ..», но когда я отправляю это сообщение в группу, он становится отображается на обоих screen..I хотите, чтобы отобразить его на экране ресивер толькоОтносительно сообщения отправить в singnal R

Это код

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); 


    } 
} 

где здесь печатая сообщение = 0 означает нормальное сообщение по й 1 означает, что «пользователь х печатая это сообщение» Это ключ пресс-конференция

//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); 
     }; 

Как я могу отобразить набрав сообщение для моего ресивера, а не на оба экрана ... пожалуйста, помогите мне. Короче говоря, я хочу отправить свое сообщение только получателю группы не отправителю группы Спасибо

ответ

3

Если вы хотите отправить сообщение всем клиентам в группе, кроме отправителя, вы можете использовать:

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

Это эквивалентно переходу идентификатор соединения отправителя в качестве второго параметра Clients.Group делает его без идентификатор соединения.

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

Метод подписи для Clients.Group является: public dynamic Group(string groupName, params string[] excludeConnectionIds).