websocket send: make sure all data in the kernel buffer is sent
This commit is contained in:
parent
d88bf16500
commit
dedbeb3eab
@ -586,6 +586,12 @@ namespace ix
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure we send all the buffered data ; there can be a lot of it
|
||||
// for large messages.
|
||||
// TODO / this will block the sending thread ; we need to eval whether
|
||||
// this is the right fix
|
||||
while (!isSendBufferEmpty()) sendOnSocket();
|
||||
|
||||
return WebSocketSendInfo(true, compressionError, payloadSize, wireSize);
|
||||
}
|
||||
|
||||
|
@ -64,7 +64,13 @@ namespace ix
|
||||
{
|
||||
if (client != webSocket)
|
||||
{
|
||||
client->send(str);
|
||||
client->send(str,
|
||||
[](int current, int total) -> bool
|
||||
{
|
||||
std::cerr << "Step " << current
|
||||
<< " out of " << total << std::endl;
|
||||
return true;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -206,6 +206,11 @@ namespace ix
|
||||
handleMessage(str);
|
||||
_condition.notify_one();
|
||||
}
|
||||
else if (messageType == ix::WebSocket_MessageType_Fragment)
|
||||
{
|
||||
ss << "ws_receive: received fragment";
|
||||
log(ss.str());
|
||||
}
|
||||
else if (messageType == ix::WebSocket_MessageType_Error)
|
||||
{
|
||||
ss << "Connection error: " << error.reason << std::endl;
|
||||
|
@ -63,7 +63,13 @@ namespace ix
|
||||
{
|
||||
if (client != webSocket)
|
||||
{
|
||||
client->send(str);
|
||||
client->send(str,
|
||||
[](int current, int total) -> bool
|
||||
{
|
||||
std::cerr << "Step " << current
|
||||
<< " out of " << total << std::endl;
|
||||
return true;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user