Tôi đang làm việc trên ứng dụng Haskell, chạy trong trình duyệt được biên dịch với GHCJS, giao tiếp với máy chủ, cũng được viết bằng Haskell, qua websockets. Cả hai chương trình đều có cùng định nghĩa kiểu dữ liệu Haskell và tôi “chỉ” phải chọn định dạng tuần tự hóa.Định dạng dây hiệu quả nhất cho mã GHCJS trên websockets
Hiện tại, để đơn giản, chương trình chạy trên Read
và Show
, hoạt động nhưng rõ ràng không lý tưởng.
Mặt khác, không rõ liệu các ứng cử viên bình thường cho serialization nhanh, chẳng hạn như thư viện cereal
, hoạt động trên ByteStrings
thực sự sẽ hiệu quả trong GHCJS. Hơn nữa, API của GHCJS có vẻ khó để cho phép ByteStrings
tương tác với loại nhị phân Blob
mà các ràng buộc JavaScript vào Websockets cung cấp.
Tạo mã chung (sử dụng GHC.Generics
) sẽ rất tuyệt.
Có ai đã giải quyết vấn đề này trước đây không? Thậm chí có thể chuẩn hóa các biến thể tuần tự hóa khác nhau trên GHCJS?
Tôi vừa sử dụng ngũ cốc. Tôi đã sử dụng reflex-frp trên máy khách, cung cấp một cách cơ bản để xem một websocket như một sự kiện đầu vào của ByteString và một sự kiện đầu ra của ByteString. Tôi đã không thực sự có bất kỳ nhu cầu hiệu suất cụ thể mặc dù, và tôi đã không chuẩn; Tôi đã có những mảnh nằm xung quanh đã (đã sử dụng ngũ cốc anyway), và nó chỉ làm việc, vì vậy đó là tất cả tôi cần thiết. – Ben
Đoán tôi nên xem xét 'reflex-frp' cho các ràng buộc websockets của chúng. –
Tôi nhớ lại mặc dù tôi đã sử dụng 'https: // github.com/reflex-frp/reflex-platform' chứ không phải là hackage, và tôi đã có một số thất vọng cho đến khi tôi tìm ra rằng các công cụ websocket bao gồm trong đó là đáng kể khác với những gì đã được phát hành trên hackage vào thời điểm đó (một vài tháng trước). – Ben