Tổng quan • Netty là gì? – Phương pháp kết nối client – server thông qua socket – Chức năng tương đương apache Mina • Tại sao dùng netty – Apache Mina đã đóng với Dev, khó customize. Netty vẫn là hệ thống mở và hoàn toàn customize được Kiến trúc của Netty Kiến trúc netty • Netty hỗ trỡ xây dựng winform trên các dịch vụ vận chuyển( Transport Service) và hỗ trợ webform trên các giao thức trên nền web( Http&Websocket, SSL&startTSL, GoogleProtobuf) • Điều mà ta quan tâm là cách sử dụng các phương thức được hỗ trợ bởi Netty. Channels và Pipeline • Client kết nối với Server thông qua 1 kênh( channel) và mỗi kênh( channel) chỉ gắn với 1 kết nối • Ống ( pipeline) được dựng trên 1 kênh nhằm tối ưu hóa các việc truyền dữ liệu trên kênh bằng cách phân luồng. Tại sao lại vậy??? Channels và pipeline • Đường dữ liệu truyền trên kênh Channel và pipeline • Do dữ liệu phải đi tuần tự qua các Handler nên khi sử dụng pipeline việc sử lí dữ liệu sẽ được liên tục trên kênh, giúp tăng tốc việc truyền dữ liệu Sử dụng netty • Các trạng thái kết nối( channel) giữa client và server trong netty • Khi kết nối: OPEN => BOUND => CONNECTED • Khi đứt kết nối: DISCONNECTED => UNBOUND => CLOSE Sử dụng netty • Tạo Handler: – Các handler thường được kế thừa từ lớp abstract của netty( SimpleChannelHandler, SimpleUpstreamChannelHandler, SimpleDownstreamChannelHandler) – Các phương thức override kế thừa từ các lớp xử lí cho từng trạng thái của kênh ( channelOpen, channelConnected, channelDisconnected, channelClose) – Hàm receivedMessage sử dụng để nhận các dữ liệu trên kênh Sử dụng Netty • Tạo Pipeline – Từ các handler đã có, ta tạo ra 1 pipeline( pipelinFactory) để sử dụng • Tạo channel – Tạo channel( channelFactory) sau đó gắn kênh đã tạo phía trên vào channel Handshake • 1 kết nối giữa client và server trong thực tế để đảm bảo tính bảo mật cần có một quá trình xác thực gọi là bắt tay( Handshake) • Handshake thực chất cũng là 1 kiểm soát( Handler) trên pipeline. Nó nhằm xác thực client và server để tạo kết nối giữa client và server. Sau khi client và server xác thực và kết nối thành công, handshake sẽ được remove khỏi pipeline và client-server sẽ truyền dữ liệu bình thường Handshake • Trước hankshake khi pipeline vừa tạo Handshake • Sau khi Handshake thành công