2013-06-26 30 views
12

Tôi mới sử dụng SignalR (bắt đầu hôm nay), Khá đơn giản để gửi tin nhắn đến TẤT CẢ các khách hàng được kết nối, nhưng bây giờ tôi muốn gửi đến một nhóm. Tôi không thể tìm thấy tài liệu đơn giản về cách tham gia ở phía khách hàng. Nếu có ai có thể giúp, làm thế nào tôi có thể SIMPLY tham gia một nhóm ở phía bên javascript. Cảm ơn vì bất kì sự giúp đỡ.Cách tham gia một nhóm bằng SignalR

public class EventHub : Hub 
{ 
    public void SendNewMedia(MediaInfoViewModel model,Guid eventId) 
    { 
     Clients.Group(eventId.ToString()).setupmedia(model); 
    } 
} 
//Controller that is sending client new data 
var eventHub = GlobalHost.ConnectionManager.GetHubContext<EventHub>(); 
       var result = eventHub.Clients.Group(eventId.ToString()).setupmedia(eventViewer); 

//Finally the javascript. Not sure how to setup just for a group 
$(function() { 
    var event = $.connection.eventHub; 
    event.client.setupmedia = function (newMedia) { 

     $('#photolist').prepend('<li><img src="' + newMedia.MediaUrl + '" class="img-polaroid span2"/></li>'); 
    }; 
    $.connection.hub.start(function() { 
     event.server.create(eventID);//I know this is wrong but not sure how to connect 
    }).done(function() { 
     alert('conntected. Ready to retrieve data!'); 
    }); 
}); 

Trả lời

25

Bạn không thể. Nếu bạn có thể tham gia một nhóm từ javascript thì bất cứ ai cũng có thể sử dụng mã của bạn để tham gia bất kỳ nhóm nào phá vỡ bảo mật. Nếu bạn thực sự cần thực hiện điều đó - hãy tạo một phương thức ở phía máy chủ để lấy tên nhóm làm tham số và thêm khách hàng vào nhóm.

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

Sau đó, gọi nó là từ JS như thế

eventHub.server.joinGroup("my-awsm-group"); 
+0

Loại ngạc nhiên này là câu trả lời duy nhất. Là người mới đến Signal R Tôi tò mò bản thân mình những gì các mô hình thay thế là để tham gia một nhóm? Có cách nào để kết nối một máy khách ở phía máy chủ không, ví dụ như không phải là một phần của một tương tác trực tiếp rõ ràng như thế này (nơi mà máy khách JS gọi một phương thức). Giống như bạn có thể tham gia một khách hàng vào một nhóm ở phía máy chủ nếu bạn có ID khách hàng của họ và sau đó họ kỳ diệu trở thành một phần của nó? PS. điều này thực sự không phải là một câu hỏi khác - chỉ cần nhiều hơn nếu bạn (hoặc bất kỳ ai khác) có bất kỳ suy nghĩ nào khác –

+1

Quản lý nhóm chỉ được thực hiện trên máy chủ, vâng - nếu bạn có id kết nối của người dùng, bạn có thể thêm bất kỳ nhóm nào. Trong thực tế, đó là cách nó phải làm việc. –

Các vấn đề liên quan