1.4.2 .Cách thức họat động của OVPM
2.2. Xây dựng phần mềm máy trạm
2.2.10 Module gửi thông tin cho máy chủ
2.2.10.1. Quản lý kết nối
Để kết nối, chúng tôi sử dụng thư viện mã nguồn mở websocketpp, một thư viện hỗ trợ websocket sử dụng C++. Agent tạo ra một thread để quản lý đường truyền. Thread này sẽ có nhiệm vụ theo dõi có sự kiện nào của websocket xẩy ra hay không. Ví dụ, khi kết nối đến máy chủ bị lỗi, sự kiện on_fail hoặc on_close sẽ được gọi từ hệ thống.Nhận biết được sự kiện này, agent sẽ thực hiện thiết lập lại kết nối mà không làm ảnh hưởng đến toàn bộ hoạt động của chương trình.
Hình 2.26 Sơ đồ thuật toán thực hiện việc quản lý kết nối
2.2.10.2. Mã hóa và đóng gói dữ liệu
-
-
-
+
Lấy thông số cấu hình Bắt đầu
Kết nối máy chủ Tồn tại?
Kết nối?
Đợi sự kiện từ máy chủ
Mất kết nối? Có yêu cầu từ máy chủ? Gửi thông tin đến
sensor tương ứng
Có yêu cầu gửi tới máy chủ?
Agent tắt?
Kết thúc Gửi kết quả đến máy
chủ + + + + + - - -
Để tương thích với máy chủ, thông tin trước khi gửi đi được đóng gói bằng protobuf.Định dạng gói tin được thống nhất chung giữa máy chủ và máy trạm, sau đó nó sẽ được biên dịch dưới dạng thư viện C++.
Dữ liệu đóng gói sẽ được mã hóa sử dụng AES (CFB Mode) với khóa được sinh ra tự động từ máy chủ khi máy trạm đăng ký hoạt động với hệ thống.Chúng tôi sử dụng thư viện mã nguồn mở Crypto++ để thực hiện việc mã hóa này. Thư viện này được cộng đồng phát triển hỗ trợ hầu hết các thuật toán mã hóa hiện đại.Ngoài ra thư viện này còn được sử dụng trong chương trình như là cách thức hữu hiệu để bảo vệ thông tin về cấu hình được lưu trên máy trạm, trong đó thông tin về clientID do máy chủ sinh ra duy nhất cho máy trạm được là thông tin quan trọng nhất.