Tôi đang tạo ứng dụng máy khách cho máy khách bằng cách sử dụng netty và ios, tôi đang gặp sự cố khi người dùng tắt WiFi trên thiết bị ios của anh ấy, máy chủ netty không biết về nó. Máy chủ cần phải biết để làm sạch cho người dùng đó và đặt người đó ngoại tuyến, nhưng bây giờ khi người dùng cố gắng kết nối lại, máy chủ chỉ cho biết rằng họ đã trực tuyến.Phát hiện kín kênh Netty
Trả lời
Nếu tôi hiểu vấn đề của bạn một cách chính xác: Bạn muốn nghe cho kênh khách hàng đóng kiện trong phía máy chủ và làm một số ngẫu nhiên phiên,
Có hai cách để lắng nghe cho kênh đóng các sự kiện trong Netty:
1) Nếu xử lý máy chủ của bạn kéo dài SimpleChannelHandler/SimpleChannelHandler
, sau đó bạn có thể ghi đè phương pháp sau đây và viết dọn dẹp luận phiên của bạn có
public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception;
2) Nếu bạn chỉ có quyền truy cập vào các tài liệu tham khảo kênh, sau đó bạn có thể g et kênh tương lai gần và đăng ký thực hiện của bạn của ChannelFutureListener
với logic dọn dẹp phiên của bạn,
ChannelFuture closeFuture = channel.closeFuture();
closeFuture.addListener(new ChannelFutureListener() {
@Override
public void operationComplete(ChannelFuture future) throws Exception {
//session cleanup logic
}
});
Kiểm tra phiên id và cho phép đàm phán lại. Hoặc bạn có thể sử dụng một cái gì đó như bộ điều khiển cookie. Tôi có thể hỏi câu hỏi chủ đề: Khách hàng của bạn trên ios tương tác với máy chủ netty như thế nào? (Những gì khuôn khổ bạn sử dụng về phía khách hàng, và những gì bộ giải mã/mã hóa sử dụng?)
Sử dụng IdleStateHandler
Bạn có thể phát hiện khi không có yêu cầu/phản ứng trong khoảng thời gian nhất định.
- 1. Đặt thời gian chờ của ổ cắm trên kênh netty
- 2. Phát hiện kênh phân phối/loại giấy phép Visual Studio
- 3. Thực hiện IDisposable trên lớp kín
- 4. Sử dụng SPDY với Netty
- 5. có thể phát hiện kênh/ngắt kết nối đáng tin cậy không?
- 6. Cách phát kênh riêng và kênh trái với AudioTrack?
- 7. Netty - làm thế nào để có được tất cả các kênh khách hàng?
- 8. Làm thế nào để có được một số ID cho Kênh Netty?
- 9. tcpsocket kết nối lại (hoặc cách phát hiện ổ cắm kín)
- 10. Cách phát hiện sự kiện ngắt kết nối trên kênh với Faye
- 11. Netty ServerBootstrap - liên kết không đồng bộ?
- 12. mockito vs gói kín
- 13. Netty và ByteOrder
- 14. Netty Tăng ChannelBuffer Size
- 15. Netty SslHandler nhức đầu
- 16. Thực hiện các tin nhắn lưu giữ trong Netty bằng cách sử dụng WriteTimeoutHandler
- 17. Netty 4 - EventLoopGroup - EventLoop - EventExecutor - Chủ đề ái lực
- 18. Cách viết một Máy khách Netty hiệu năng cao
- 19. Chuỗi an toàn của Netty Channel.write có an toàn không?
- 20. Netty 4 nhiều khách hàng
- 21. Kênh IRC dành cho nhà phát triển iPhone?
- 22. Phát lại video gốc trên Android với kênh alpha
- 23. Sử dụng Jetty hoặc Netty?
- 24. Channel.isCó thể ghi nhận thông báo trong Netty
- 25. Netty SSL: cách viết TrustManager
- 26. Loại lớp học khép kín
- 27. Netty SSL Handler Unit Test
- 28. Gửi nhiều yêu cầu asynchonous trên máy khách Netty
- 29. phát hiện con trỏ chuột qua một Path2D
- 30. NIO - Phát hiện kết nối đã đóng
Vâng, tôi đã thực hiện phương pháp channelClosed, và nó hoạt động tốt khi người dùng đóng ứng dụng ví dụ, nhưng nếu người dùng chỉ mất kết nối wifi của mình, phương pháp này không được gọi. –
sau đó tốt hơn để thêm một IdleStateHandler với thời gian chờ đọc tối ưu nhàn rỗi. Nếu người dùng không sử dụng nhiều hơn thời gian đó, có thể nó có thể là trường hợp bị mất kết nối, vì vậy hãy đóng kết nối trên IdleStateEvent khỏi trình xử lý máy chủ của bạn. –
Trong các phiên bản mới hơn của Netty, 'getCloseFuture()' có vẻ là 'closeFuture()' – childofsoong