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

时间:2016-09-07 14:56:53

标签: java websocket vert.x

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

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

手册说:

  

writeBinaryMessage():如果超过最大WebSocket帧大小,此数据可能被写为多个帧

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

writeBinaryMessage()write()之间的区别是什么?

1 个答案:

答案 0 :(得分:2)

writeBinaryMessage()

  • 将(可能很大的)二进制数据写入连接。如果该数据超过最大WebSocket帧大小,则该数据可能被写为多个帧。

写()

  • 将一些数据写入流中。数据放在内部写入队列中,写入实际上是异步发生的。要通过在写入队列上放置过多来避免内存不足,请在写入之前检查WriteStream.writeQueueFull()方法。如果使用泵,则会自动完成。

两者都返回相同类型的数据并采用Buffer类型的参数。

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

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

请参阅: