Tôi muốn có thể có người dùng cá nhân gửi tin nhắn cho nhau bằng SignalR, do đó tôi cần gửi đến một ID khách hàng cụ thể. Làm thế nào tôi có thể xác định ID khách hàng cho một người dùng cụ thể vào đầu phiên - nói một khóa chính GUID cho người dùng?SignalR - Đặt ClientID theo cách thủ công
Trả lời
Thay thế IConnectionIdFactory bằng https://github.com/SignalR/SignalR/wiki/Extensibility của riêng bạn.
mẫu sử dụng: http://www.kevgriffin.com/maintaining-signalr-connectionids-across-page-instances/
EDIT: Đây không còn được hỗ trợ trong phiên bản mới nhất của SignalR. Nhưng bạn có thể xác định một user id cho một kết nối cụ thể bằng cách sử dụng IUserIdProvider mới
Các SignalR Client Side documentation phác thảo như sau:
connection.id - Gets hoặc đặt id khách hàng cho các kết nối hiện
Điều này chắc chắn chỉ ra rằng người ta có thể đặt phía máy khách ClientID, mà không có tất cả các hệ thống ống nước trên. Điều này không hoạt động? Nếu làm việc, dòng mã này sẽ như thế nào?
Tôi đã không thử điều đó, nhưng tôi cần để có thể gán ID kết nối cho một cái gì đó được biết đến với máy chủ như GUID (userid), vì vậy giải pháp IConnectionFactory hoạt động tốt nhất cho tôi. – reach4thelasers
+1 để tăng nó mặc dù – reach4thelasers
Trong SignalR phiên bản 1 bằng cách sử dụng phương pháp Hubs, tôi ghi đè lên phương thức Hub OnConnected() và lưu liên kết thành viên .NET userId với id kết nối hiện tại (Context.ConnectionId) trong cơ sở dữ liệu SQL.
Sau đó, tôi ghi đè phương thức Hub OnDisconnected() và xóa liên kết giữa thành viên .NET userId và id kết nối hiện tại. Điều này có nghĩa là một trang tải lại liên kết userId/connectionId sẽ được cập nhật.
cái gì đó dọc theo dòng:
public class MyHub : Hub
{
private MembershipUser _user
{
get { return Membership.GetUser(); }
}
private Guid _userId
{
get { return (Guid) _user.ProviderUserKey; }
}
private Guid _connectionId
{
get { return Guid.Parse(Context.ConnectionId); }
}
public override Task OnConnected()
{
var userConnectionRepository = new UserConnectionRepository();
userConnectionRepository.Create(_userId, _connectionId);
userConnectionRepository.Submit();
return base.OnConnected();
}
public override Task OnDisconnected()
{
var userConnectionRepository = new UserConnectionRepository();
userConnectionRepository.Delete(_userId, _connectionId);
userConnectionRepository.Submit();
return base.OnDisconnected();
}
}
Sau đó, khi tôi cần phải kích hoạt một sự kiện SignalR cho một người dùng cụ thể, tôi có thể làm việc ra các connectionId từ hiệp hội cơ sở dữ liệu (s) với userId hiện tại - có có thể có nhiều hơn một liên kết nếu nhiều phiên bản trình duyệt có liên quan.
Bạn có ví dụ về điều này không? – CR41G14
Tôi đã cập nhật câu trả lời của mình bằng ví dụ –
- 1. Cách cài đặt thư viện python theo cách thủ công
- 2. Cài đặt Ruby Gems theo cách thủ công
- 3. Có thể cài đặt socket.io theo cách thủ công?
- 4. Đặt màu theo cách thủ công cho ggplot2
- 5. Javascript theo cách thủ công .onchange() event
- 6. Sử dụng Segue theo cách thủ công
- 7. Làm cách nào để đặt tiêu đề REFERER theo cách thủ công trong Javascript?
- 8. Cách đặt yêu cầu POST http/https theo cách thủ công?
- 9. cách đặt phạm vi trong thanh màu theo cách thủ công?
- 10. Làm cách nào để đặt loại đầu vào nút theo cách thủ công trong ASP.NET?
- 11. Cách gỡ cài đặt tiện ích mở rộng Visual Studio 2010 theo cách thủ công?
- 12. Làm cách nào để cài đặt mô-đun XS theo cách thủ công?
- 13. Bảo mật mùa xuân: setUserPrincipal theo cách thủ công
- 14. QTextEdit. Cách chọn văn bản theo cách thủ công?
- 15. Cách tránh thực hiện INotifyPropertyChanged theo cách thủ công
- 16. Android: Cách thêm tệp vào apk theo cách thủ công?
- 17. Làm cách nào để tạo TypeTag theo cách thủ công?
- 18. Cách tạo người dùng theo cách thủ công với Devise
- 19. Gọi theo cách thủ công DbMigration.Up trong EF
- 20. Đặt thủ công JComponent bên trong JPanel
- 21. Giao diện người dùng jQuery Sắp xếp được đặt theo cách thủ công một vị trí
- 22. sequelize.js - Bạn cần cài đặt gói mysql theo cách thủ công
- 23. Cài đặt apk theo cách thủ công trên thiết bị: lỗi 103
- 24. Làm thế nào để cài đặt plugin Scala theo cách thủ công?
- 25. Cài đặt Ruby 1.8.7 (và các thứ khác) theo cách thủ công
- 26. RestSharp có ghi đè lên Loại nội dung được đặt theo cách thủ công không?
- 27. Đặt tên cột theo cách thủ công trong mô hình đường ray
- 28. Knockout.js: kích hoạt theo cách thủ công được tính
- 29. Thêm hàng trên datagridview theo cách thủ công
- 30. Tải khóa cá nhân theo cách thủ công bằng ssh
Tuyệt vời - cảm ơn phản hồi và liên kết blog! – reach4thelasers
Có cách nào để đặt ID ứng dụng khách theo cách thủ công mà không sử dụng cookie không? có lẽ một tham số cho phương thức start() hoặc một cách khác để truyền thông tin cho đối tượng yêu cầu trong nhà máy kết nối tùy chỉnh? –
Cảm ơn bạn đã liên kết tới blog của mình! – 1kevgriff