2012-09-18 38 views
19

Tôi triển khai phương thức Connect() trên giao diện IConnected để thêm kết nối mới vào nhóm chính xác. Điều này hoạt động tốt ngoại trừ một điều: để thêm người dùng vào nhóm đúng, tôi cần gửi giá trị để đọc trong phương thức này. Tôi đã cố gắng bổ sung thêm tài sản cho trung tâm khách hàng:SignalR: Cách gửi dữ liệu đến IConnected.Connect()

var uIHub = $.connection.uIHub; 
uIHub.SessionType = "Edit"; 

Nhưng nó không thể truy cập từ phương pháp Connect:

if (string.IsNullOrEmpty(Caller.SessionType) || Caller.SessionType == "Edit") { 
    sessionId = WAFContext.EditSession.SessionId.ToString();     
} else { 
    sessionId = WAFContext.ViewSession.SessionId.ToString(); 
} 
Groups.Add(Context.ConnectionId, sessionId); 

Caller.SessionType luôn là null.

Bất kỳ đề xuất nào về cách giải quyết vấn đề này?

Trả lời

36

Tôi đã giải quyết vấn đề này bằng cách thêm thông tin của tôi vào chuỗi truy vấn, có sẵn trên phương thức IConnected.Connect().

Trên client NET bạn vượt qua chuỗi truy vấn vào bạn HubConnection:

var connection = new HubConnection("http://localhost:8080/", "myInfo=12345"); 

Trên client JS, bạn đặt qs tài sản trước khi bắt đầu kết nối:

$.connection.hub.qs = "myInfo=12345"; 

Bạn có thể sau đó truy cập thông tin này trên máy chủ theo phương thức Connect():

var myInfo = Context.QueryString["myInfo"]; 
Groups.Add(Context.ConnectionId, myInfo); 
+0

Bạn có biết cách làm tương tự với trình khách javascript không? Tôi đã thử những điều sau đây, nhưng nó không hoạt động: var connection = $ .connection ("http: // localhost: 61806 /", "sessionType = visit"); var uIHub = connection.uIHub; –

+1

Điều này sẽ hoạt động: '$ .connection.hub.qs =" myInfo = 12345 "; $ .connection.hub.start(); ' –

+0

@akoeplinger có an toàn khi chuyển thông số người dùng và tên người dùng theo cách này không? Có thể gây ra bất kỳ sự cố bảo mật nào không? – Freshblood

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