官网上对net.Socket的"data"事件描述如下:
Event: 'data' # <Buffer> Emitted when data is received. The argument data will be a Buffer or String. Encoding of data is set by socket.setEncoding(). (See the Readable Stream section for more information.) Note that the data will be lost if there is no listener when a Socket emits a 'data' event.
描述中说,该参数可能是Buffer,也可能是String。请问,什么时候是Buffer,什么时候是String?
话说我还没遇到过是string的情况...
net.Socket类实现了stream.Duplex接口,而stream.Duplex又实现了stream.Readable接口,这是前提。stream.Readable类有个方法setEncoding,执行该方法后会将流以特定编码的字符串返回,而不是Buffer对象,data事件中的data参数也就变成了String。
附:今天看了看《深入浅出NodeJs》的Buffer部分,才明白是这么一回事。我以为这本书不用怎么看,看来我错了,还得细读一下啊!
@草谷子: 哈哈,学习了。官方API文档也很有意思。
这个得看通信的双方怎么协商的,确实采用那种数据格式,简单点的,你也可以直接对data数据类型做判断,其实就那么简单