2013-01-14 216 views
1

我正在使用SignalR库。我正在运行我的应用程序的3个实例,然后将两个用户添加到名为“Test”的组中。现在,当我发送消息给“测试”组时,消息根本不会传送。无法发送消息到SignalR组中

public class ChatHub : Hub 
    { 
     public void send(string name, string message) 
     { 
      //This line of code is not working 
      Clients.Group("test").broadcastMessage(message); 


      //This is working 
      //Clients.All.broadcastMessage(name, message); 

     } 

     public void JoinGroup(string groupName) 
     { 
      Groups.Add(this.Context.ConnectionId, groupName); 

     } 

     public void RemoveGroup(string groupName) 
     { 
      Groups.Remove(this.Context.ConnectionId, groupName); 
     } 
    } 

// 客户端侧

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>SignalR Simple Chat</title> 
    <style type="text/css"> 
     .container { 
      background-color: #99CCFF; 
      border: thick solid #808080; 
      padding: 20px; 
      margin: 20px; 
     } 
    </style> 
</head> 
<body> 
    <div class="container"> 

     <input type="text" id="groupName" /> 
     <input type="button" id="joinGroup" value="Join" /> 
     <br /> 
     <input type="text" id="message" /> 
     <input type="button" id="sendmessage" value="Send" /> 
     <input type="hidden" id="displayname" /> 
     <ul id="discussion"> 
     </ul> 
    </div> 
    <script type="text/javascript" src="Scripts/jquery-1.6.4.min.js"></script> 
    <script type="text/javascript" src="Scripts/j`enter code here`query.signalR-1.0.0-rc1.js"></script> 

    <script type="text/javascript" src="/signalr/hubs"></script> 



</body> 

<script type="text/javascript"> 

    $(function() { 
     // Declare a proxy to reference the hub. 
     var chat = $.connection.chatHub; 
     // Create a function that the hub can call to broadcast messages. 
     chat.client.broadcastMessage = function (name, message) { 
      // Html encode display name and message. 
      var encodedName = $('<div />').text(name).html(); 
      var encodedMsg = $('<div />').text(message).html(); 
      // Add the message to the page. 
      $('#discussion').append('<li><strong>' + encodedName 
       + '</strong>:&nbsp;&nbsp;' + encodedMsg + '</li>'); 
     }; 
     // Get the user name and store it to prepend to messages. 
     $('#displayname').val(prompt('Enter your name:', '')); 
     // Set initial focus to message input box. 
     $('#message').focus(); 
     // Start the connection. 
     $.connection.hub.start().done(function() { 
      $('#sendmessage').click(function() { 
       // Call the Send method on the hub. 
       chat.server.send($('#displayname').val(), $('#message').val()); 
       // Clear text box and reset focus for next comment. 
       $('#message').val('').focus(); 
      }); 


      $('#joinGroup').click(function() { 
       // Call the Send method on the hub. 
       chat.server.joinGroup($('#groupName').val()); 
      }); 
     }); 
    }); 

</script> 

</html> 

回答

1

其实'broadcastMessage' 在客户机上期待2个参数和我只通过一个参数而调用'broadcastMessage'使用组。

更改

'Clients.Group("test").broadcastMessage(message);' 

to 

'Clients.Group("test").broadcastMessage(name, message);' worked. 
+0

马克这个答案的答案。 –