首页 新闻 会员 周边

【nodejs】net.Socket的"data"事件回调函数的参数问题

0
悬赏园豆:5 [已解决问题] 解决于 2016-04-16 13:17

官网上对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?

草谷子的主页 草谷子 | 初学一级 | 园豆:177
提问于:2016-04-12 11:47
< >
分享
最佳答案
0

话说我还没遇到过是string的情况...

收获园豆:5
幻天芒 | 高人七级 |园豆:37175 | 2016-04-12 13:25

net.Socket类实现了stream.Duplex接口,而stream.Duplex又实现了stream.Readable接口,这是前提。stream.Readable类有个方法setEncoding,执行该方法后会将流以特定编码的字符串返回,而不是Buffer对象,data事件中的data参数也就变成了String。

附:今天看了看《深入浅出NodeJs》的Buffer部分,才明白是这么一回事。我以为这本书不用怎么看,看来我错了,还得细读一下啊!

草谷子 | 园豆:177 (初学一级) | 2016-04-16 13:16

@草谷子: 哈哈,学习了。官方API文档也很有意思。

幻天芒 | 园豆:37175 (高人七级) | 2016-04-16 17:17
其他回答(1)
0

这个得看通信的双方怎么协商的,确实采用那种数据格式,简单点的,你也可以直接对data数据类型做判断,其实就那么简单

visonme | 园豆:1674 (小虾三级) | 2016-04-13 10:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册