私はHaskellアプリケーションを開発中で、GHCJSでコンパイルされたブラウザで動作しています。どちらのプログラムも同じHaskellデータ型定義を共有しています。私は「ちょうど」直列化形式を選択する必要があります。ウェブソケット上のGHCJSコードの最も効率的なワイヤフォーマット
簡潔にするために、プログラムはRead
とShow
で動作しますが、明らかに理想的ではありません。
一方、ByteStrings
で動作するcereal
ライブラリのような、高速シリアル化のための通常の競合相手が実際にGHCJSで効率的になるかどうかは不明です。さらに、GHCJSのAPIは、ByteStrings
がバイナリのBlob
タイプと対話するのを難しくしているようですが、WebSocketへのJavaScriptバインディングが提供します。
ジェネリックコードの生成(GHC.Generics
を使用)は良いでしょう。
誰もこの問題を解決しましたか?おそらくGHCJSのさまざまなシリアライゼーションの変種をベンチマークしましたか?
私はちょうどシリアルを使用しました。私はクライアント上でreflex-frpを使用していました。これは基本的に、WebSocketをByteStringの入力イベントとByteStringの出力イベントとして表示する方法を提供していました。私は本当に特定のパフォーマンスのニーズはありませんでしたが、ベンチマークはしませんでした。私はすでに穀物を使っていたのですが、それだけでうまくいきました。 – Ben
彼らのウェブソケットバインディングのために 'reflex-frp'を見てください。 –
私は 'httpsを使用していたのに、私は今、思い出すん。むしろhackageより// github.com /反射-FRP /反射-platform'を、と私はそれが有意でのWebSocketのものが含まれていることを考え出しまで、私はいくつかの不満を持っていたこと当時のハッカーにリリースされたもの(数ヶ月前)とは異なります。 – Ben