用node的tcp client在发送数据,一般是用client.write('send','utf-8');
这样如果想发100条数据,只需:
for(var i=0;i<100;i++){
client.write('send','utf-8')
}
但这样的话,在服务端只会收到一条数据,类似于:
received client: sendsendsendsend ....
所以,要怎样让client发数据的时候不是一块儿发,而真正的做到一条一条的发,这样服务端就可以逐一的去处理这些数据了。
这个?socket.end 但这样每次要重连了
如果不想重连的话,就自己设定个格式,拿到之后分析吧。
@booxood socket.end 不建议在这个环境下使用。
定格式这种方式目前在用。不过还是有问题。
有一种情况,node会有一个默认的bufferSize,当数据到了这个size之后才会去发一个包。
这种情况下,添加格式,比如
client.write('send'+'|--end--|')
,
当我同时write了1000条数据,你想要的结果可能是:
sendsend....(1000个)
但是实际的结果会是:
sendsend...se
并没有1000,或许第500个的时候,截取了send的一部分。node就这样打了个包,发出去了。
所以,如何优化?
setNoDelay试试
已试,貌似没用。
@myhirra 优化?优化什么?没明白。。。
是想拿全部数据再解析?可以监听end事件
在循环里面中,io根本拿不到执行的机会。。。
监听end事件要client.end()才行。