Tolerate some bufferedAmount and send() return value.
- Only delay sending data if bufferedAmount is greater than 1000. This seems to match the intention of the spec better. bufferedAmount does not mean that we can't send, it's just an indication that the network is becoming saturated. But Opera 11 native WebSockets seems to have a bug that bufferedAmount isn't set back to zero correctly so - websock.send returns true/false. If all send data was flushed from the send queue then return true, otherwise false. This doesn't mean the data won't be sent, just that it wasn't sent this time and is queued.
This commit is contained in:
parent
d8c90aea88
commit
307dda1ad0
|
@ -166,7 +166,10 @@ function decode_message(data) {
|
|||
//
|
||||
|
||||
function flush() {
|
||||
if (websocket.bufferedAmount === 0) {
|
||||
if (websocket.bufferedAmount !== 0) {
|
||||
Util.Debug("bufferedAmount: " + websocket.bufferedAmount);
|
||||
}
|
||||
if (websocket.bufferedAmount < 1000) {
|
||||
//Util.Debug("arr: " + arr);
|
||||
//Util.Debug("sQ: " + sQ);
|
||||
if (sQ) {
|
||||
|
@ -175,7 +178,8 @@ function flush() {
|
|||
}
|
||||
return true;
|
||||
} else {
|
||||
Util.Debug("Delaying send");
|
||||
Util.Info("Delaying send, bufferedAmount: " +
|
||||
websocket.bufferedAmount);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -184,7 +188,7 @@ function flush() {
|
|||
function send(arr) {
|
||||
//Util.Debug(">> send_array: " + arr);
|
||||
sQ = sQ.concat(arr);
|
||||
flush();
|
||||
return flush();
|
||||
};
|
||||
|
||||
function send_string(str) {
|
||||
|
|
Loading…
Reference in New Issue