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

Java Vert.x WebSocket的writeBinaryMessage()和write()有什么不同?,java,websocket,vert.x,Java,Websocket,Vert.x,我正在使用Vert.x及其ServerWebSocket类处理一个服务器项目 目前,我的项目使用Pump#Pump()和ServerWebSocket#write()方法向客户端发送大型二进制数据,效果很好。但是我发现,ServerWebSocket有另一种发送二进制数据的方法,writeBinaryMessage() 手册上说: writeBinaryMessage():如果此数据超过最大WebSocket帧大小,则可能会将其写入多个帧 但是我认为ServerWebSocket#write()

我正在使用Vert.x及其
ServerWebSocket
类处理一个服务器项目

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

手册上说:

writeBinaryMessage()
:如果此数据超过最大WebSocket帧大小,则可能会将其写入多个帧

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

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

writeBinaryMessage():

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

  • 向流中写入一些数据。数据放在一个内部写入队列中,写入实际上是异步进行的。要避免写入队列中的内存过多而耗尽,请在写入之前检查WriteStream.WriteQueueFullel()方法。如果使用泵,这将自动完成
两者都返回相同类型的数据,并采用缓冲区类型的参数

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

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

见:

writeBinaryMessage():

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

  • 向流中写入一些数据。数据放在一个内部写入队列中,写入实际上是异步进行的。要避免写入队列中的内存过多而耗尽,请在写入之前检查WriteStream.WriteQueueFullel()方法。如果使用泵,这将自动完成
两者都返回相同类型的数据,并采用缓冲区类型的参数

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

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

见: