我一直在寻找不让 socket 套接字阻塞 micropython 主进程的方法。通常的做法是启动一个socket套接字专属的线程来 accept
和 recv
因为有些开发版(例如esp8266)是不支持多线程的, 而且一直挂着个线程对于某些需要低功耗的场景来说显然是不明智的。
于是我在 webrepl 的代码中找到了这个:
listen_s.setsockopt(socket.SOL_SOCKET, 20, accept_handler)
![](https://blog.m-jay.cn/wp-content/uploads/2021/06/image-1.png)
webrepl给socket对象绑定了一个回调函数, 我一直好奇这个 20 是什么意思, 所以我一直查啊查, 一直找不到结果, 直到我给开发组提交了 issue