2016-09-07 84 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()方法。如果使用泵,這將自動完成。

兩者都返回相同類型的數據並取參數的Buffer類型。

只是區別在於這兩個函數處理內部不同的數據。

如果你想要寫一個大的二進制數據,那麼你應該使用writeBinaryMessage(緩衝數據),如果你發送很多小消息動態,那麼你應該使用異步函數寫(緩衝數據)

請參閱:

相關問題