Vert.x WebSocket 的 writeBinaryMessage() 和 write() 有什么不同?

What is different between writeBinaryMessage() and write() of Vert.x WebSocket?

我正在使用 Vert.x 及其 ServerWebSocket class.

开发服务器项目

目前,我的项目使用Pump#pump()ServerWebSocket#write() 方法向客户端发送大型二进制数据并且效果很好。但是我发现ServerWebSocket还有另一种发送二进制数据的方法,writeBinaryMessage()

手册说:

writeBinaryMessage() : This data might be written as multiple frames if it exceeds the maximum WebSocket frame size

但我认为 ServerWebSocket#write() 也通过抽取流将数据作为多个部分发送。

writeBinaryMessage()write()有什么区别?

writeBinaryMessage():

  • 将一段(可能很大)二进制数据写入连接。如果超过最大 WebSocket 帧大小,此数据可能会写入多个帧。

write()

  • 向流中写入一些数据。数据放在一个内部写入队列中,写入实际上是异步发生的。为避免 运行 由于在写入队列中放置太多而导致内存不足,请在写入前检查 WriteStream.writeQueueFull() 方法。如果使用泵,这是自动完成的。

都是returns相同类型的数据,都采用Buffer类型的参数。

唯一的区别是这两个函数在内部处理数据的方式不同。

如果你想写一个大的二进制数据,那么你应该使用 writeBinaryMessage(Buffer data) 如果你动态发送很多小消息那么你应该使用异步函数 write(缓冲区数据)

参见: