Comments (7)
完全正确
from smux.
自己嚕的TCP over TCP已踩到這問題...
改成每個stream一個token
加入2個控制封包: full, empty
這樣是否會比較好?
正在改寫中
如果完成後沒問題會提交PR
from smux.
@cs8425 不清楚你说的每个stream一个token怎么实现,你又无法预知下一个strream id是什么的时候
from smux.
@xtaci
目前大致構想是這樣的:
廢掉Session的token bucket
Stream結構裡面加入token
Session的recvLoop(), cmdPSH的時候檢查Stream的token(假設為A端)
不足的話傳送stream id + full到對面(假設為B端)
block住B端那個stream id的Write
直到A端Read夠多的資料出來(token夠多了)
A端傳送stream id + empty到B端
讓B端的那個stream可以繼續Write
不知道這樣會不會有什麼問題就是
from smux.
这样stream越多,内存用量越大
from smux.
是的
理想情況下可能還需要一個機制來控制最大同時連線數
不過理論上來說
除非夠多的stream都很慢
而且對面沒收到控制封包block住Write操作
否則記憶體用量應該是可以接受的
from smux.
https://github.com/xtaci/smux/tree/v2
from smux.
Related Issues (20)
- Unnecessary keepalive frames HOT 4
- Serious keepalive issue HOT 6
- 修正一处细节, HOT 4
- Blocked streams under heavy load HOT 5
- smux multiplexes multiple TCP connections?
- Stream does not return net.Error for timeouts
- alloc module memory release HOT 1
- What's the difference between version1 and version2 in smux.Config? HOT 4
- cmdFIN and cmdPSH race condition HOT 2
- 如何检测一个 Conn 是否 muxing?
- proposal: add option to not close idle session HOT 1
- 一个stream不读数据,另一端stream一直写,直到缓冲满。这个时候绑定在conn上的Session将不能执行任何指令。 HOT 4
- 写超时,应用层选择重发 HOT 1
- 看了好多遍都没看懂,这个地方没有错误吗 HOT 15
- TestGetDieCh() strange behaviour seems cause by racing
- 建议增加一个 Session.GetCloseChan() 的函数,可以使用select快速得知连接已经被断开 HOT 6
- An extra character appears when using io.Copy
- 想问下协议版本1和2有什么区别 HOT 5
- 能否支持自动匹配客户端版本 (version 1,2) HOT 2
- Multiplexing over SCTP unordered mode HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from smux.