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(缓冲区数据)
参见:
我正在使用 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(缓冲区数据)
参见: