2016-09-07 106 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(缓冲数据),如果你发送很多小消息动态,那么你应该使用异步函数写(缓冲数据)

请参阅:

相关问题