我正在使用Vert的服务器项目上工作。x及其ServerWebSocket
类
目前,我的项目使用Pump#pump()
和ServerWebSocket#write()
方法向客户端发送大型二进制数据,效果很好。但我发现ServerWebSocket
有另一种发送二进制数据的方法,writeBinaryMessage()
。
手册说:
writeBinaryMessage()
:如果超过WebSocket最大帧大小,该数据可能会被写入多个帧
但我认为ServerWebSocket#write()
也通过泵送流作为多个部分发送数据。
writeBinaryMessage()
和write()
有什么区别?
writeBinaryMessage () :
- 将一段(可能很大的)二进制数据写入连接。如果超过WebSocket最大帧大小,该数据可能会被写入多个帧。
写()
- 写一些数据到流。数据被放在一个内部写队列中,而写实际上是异步进行的。为了避免在写队列上放置太多内存而导致内存耗尽,请在写之前检查WriteStream.writeQueueFull()方法。如果使用泵,则自动完成。
返回相同类型的数据,并接受Buffer类型的形参
唯一的区别是两个函数内部处理数据的方式不同。
如果你想写一个大的二进制数据,那么你应该使用writeBinaryMessage(Buffer data)如果你动态发送很多小的消息,那么你应该使用async函数write(Buffer data)
:
- 写(缓冲区数据)
- writeBinaryMessage(缓冲区数据)