C/S 之间通讯最好使用 WebSocket 协议
nekocode opened this issue · 4 comments
nekocode commented
目前因为 Client 端使用 Http 轮询的方式,导致 Server 端被设计为所谓的「生产者 / 消费者」模式,这其实是一个设计错误,会导致很多问题:
- 无法主动 Push 数据给 Client,导致只能在 Server 用 Stack 来存数据,Client 主动 Pull
- 无状态。没有对不同的 Client 做区分,导致有多个 Client 的情况下会竞争数据
建议可以改为使用 WebSocket 协议通讯。WebSocket Server 端可以用 Stetho 的实现,具体可以参考: https://github.com/nekocode/websocket-adb-forward
Kyson commented
首先非常感谢你提出这个非常棒的建议
在这个场景下,WebSocket确实是更好的选择,只是模拟http通讯的实现成本小一点,所以选了http实现,事实上当时的目的也是想把这个库尽快实现。
至于多个client的问题,目前这个库没有考虑到这一点,只是考虑了多个消费者(这个简单的server也是其中之一)的情况。
总之,很棒的建议,后面有精力的话我会进行优化:-)
nekocode commented
Cool,期待!