2016-09-07 11 views
0

私はVert.xとそのServerWebSocketクラスを使ってサーバープロジェクトに取り組んでいます。Vert.x WebSocketのwriteBinaryMessage()とwrite()の違いは何ですか?

現在、私のプロジェクトでは、クライアントに大きなバイナリデータを送信するのに、Pump#pump()ServerWebSocket#write()メソッドを使用しています。しかし、ServerWebSocketには別の方法でバイナリデータを送信していることがわかりました。writeBinaryMessage()

マニュアルは言う:

writeBinaryMessage():それは最大のWebSocketフレームサイズ

を超えた。しかし、私はServerWebSocket#write()もすることにより、複数の部品としてデータを送信することを考えると、このデータは複数のフレームのように記述される可能性がありますストリームをポンピングする。

writeBinaryMessage()write()の違いは何ですか?

答えて

2

writeBinaryMessage()

  • 接続バイナリデータの(潜在的に大きな)部分を書き込み。このデータは、最大WebSocketフレームサイズを超えると、複数のフレームとして書き込まれることがあります。

書き込み()

  • ストリームにいくつかのデータを書き込みます。データは内部書き込みキューに置かれ、実際には非同期で書き込みが行われます。書き込みキューを多すぎてメモリ不足にならないようにするには、書き込みの前にWriteStream.writeQueueFull()メソッドをチェックしてください。これは、ポンプを使用する場合は自動的に行われます。

両方とも、同じタイプのデータを返し、バッファタイプのパラメータをとります。

違いは、両方の関数が内部的に異なるデータを処理することだけです。

あなたは大きなバイナリデータを書き込みたい場合は、あなたがwriteBinaryMessage(バッファデータ)を使用する必要がありますし、あなたはたくさんの小さなメッセージを送信する場合、動的に、あなたが書き込み(バッファデータ)

非同期機能を使用する必要があります参照:

関連する問題