ash-liu / kid_blockly

为了方便自己家小孩学习block编程做的玩具,界面和功能多来自于网络,仅根据个人喜好做添加和修改。
0 stars 0 forks source link

websocket有时候会报错的问题 #12

Closed ash-liu closed 3 years ago

ash-liu commented 3 years ago

ws在连接后,偶尔会报这个错误::WebSocket connection to 'ws://192.168.1.8:8266/' failed: Could not decode a text frame as UTF-8.

ash-liu commented 3 years ago

导致错误的原因是:esp8266那边ws server内存溢出了,所以出现错误。在进一步,是因为chrome这边没有读取,所以导致8266积累过多数据无法发送,引发异常。

仔细想想,当前串口是作为一个没有流控的接收端,源源不断的数据进来,出口是基于tcp的ws,可是tcp是有流控的,如果tcp的另一端阻塞了读取,那么这些数据只能暂存在esp8266里面,在8266内存有限的情况下,不可能存在什么设计能够解决这个问题,除非读取的速度比串口那边更快。

具体解决的代码,参考:https://github.com/ash-liu/kid_blockly/commit/d0f323b3d7a38270561fc2d811c24655b0a34498