JSONファイルの全データ受信チェック
JSONデータを受け取る際、受信データをできる限り漏れなく受け取り、正しく解釈するためには、何をすべきかを考える。
まず大前提として、TCPで送受信する際、データが途中で途切れたりすることは無い。
(プロトコル上、基本的に保証されている。)
しかし、MTUの制限で中途半端に途切れたデータがくることはあり得る。
◆ MTU(Maximum Transmission Unit)
MTU とは、一回のデータ転送にて送信可能な [ IPデータグラムの最大値 ] のことです。
例えば、Ethernet型LANの環境においてはEthernetフレームが最大 1518 byte なので、
Ethernetヘッダ ( 14byte ) と FCS ( 4byte ) を除く 1500byte がMTUサイズとなります。
この場合、JSON.parseをループして監視する方法がある。
(parseが成功するまで受信データをずっとバッファに足していく形)
しかし下記場合にもparseエラーになる。
①正しいJSONデータが複数入っている
②ゴミデータが混入している(混入部分以外のJSONデータは正しいのに、ゴミデータのせいでエラーになってしまっている)
③JSON形式でない完全なゴミデータ(ありえる?
これらすべてを考慮した設計・実装が必要。
結論
基本は、JSON.parseのループで行う。
加えて、各エラー時の考慮をどのように入れるかを検討する。
以下は検討中。
①正しいJSONデータが複数入っている
・中カッコ{}、大かっこ[]の個数を数える
②ゴミデータが混入している(混入部分以外のJSONデータは正しいのに、ゴミデータのせいでエラーになってしまっている)
③JSON形式でない完全なゴミデータ(ありえる?