最近在学习socket编程,遇到tcp粘包的问题,查了资料,大致看到两种封包思路:
粘包的术语是生造出来不正确的。 实际场景是需要你自行定义(设计)数据流解析方式(比如用 \r\n 作终止符)
楼上说得非常到位,数据流协议和处理必须自己根据需求制定,没有协议的数据流是不科学的。推荐看看变形流stream.Transform 类,比如zlib,crypto包。你需要的不是on('data', data =>{}),而是on('frame',frame =>{})。根据\r\n分割,可以了解readline
不科学
stream.Transform 类
on('data', data =>{})
on('frame',frame =>{})
\r\n
readline
@waitingsong 多谢,通过自己实践,慢慢理解了
可以参考这个: https://github.com/lvgithub/stick#readme
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
粘包的术语是生造出来不正确的。 实际场景是需要你自行定义(设计)数据流解析方式(比如用 \r\n 作终止符)
楼上说得非常到位,数据流协议和处理必须自己根据需求制定,没有协议的数据流是
不科学的。推荐看看变形流stream.Transform 类,比如zlib,crypto包。你需要的不是on('data', data =>{}),而是on('frame',frame =>{})。根据\r\n分割,可以了解readline@waitingsong 多谢,通过自己实践,慢慢理解了
可以参考这个: https://github.com/lvgithub/stick#readme