Commit 400cfbe2 authored by Pavel Vainerman's avatar Pavel Vainerman Committed by Pavel Vainerman

[uwebsocket]: increased maxsend to 5000.

parent 8d26f08f
......@@ -83,6 +83,8 @@ UWebSocketGate::UWebSocketGate( uniset::ObjectId id, xmlNode* cnode, const strin
wsMaxSend = conf->getArgPInt("--" + prefix + "max-send", it.getProp("wsMaxSend"), wsMaxSend);
wsMaxCmd = conf->getArgPInt("--" + prefix + "max-cmd", it.getProp("wsMaxCmd"), wsMaxCmd);
mylog1 << myname << "maxSend=" << wsMaxSend << " maxCmd=" << wsMaxCmd << endl;
httpHost = conf->getArgParam("--" + prefix + "httpserver-host", "localhost");
httpPort = conf->getArgPInt("--" + prefix + "httpserver-port", 8081);
httpCORS_allow = conf->getArgParam("--" + prefix + "httpserver-cors-allow", "*");
......@@ -252,7 +254,7 @@ void UWebSocketGate::help_print()
cout << "--prefix-max num - Максимальное количество websocket-ов" << endl;
cout << "--prefix-heartbeat-time msec - Период сердцебиения в соединении. По умолчанию: 3000 мсек" << endl;
cout << "--prefix-send-time msec - Период посылки сообщений. По умолчанию: 500 мсек" << endl;
cout << "--prefix-max-send num - Максимальное число сообщений посылаемых за один раз. По умолчанию: 200" << endl;
cout << "--prefix-max-send num - Максимальное число сообщений посылаемых за один раз. По умолчанию: 5000" << endl;
cout << "--prefix-max-cmd num - Максимальное число команд обрабатываемых за один раз. По умолчанию: 200" << endl;
cout << "http: " << endl;
......@@ -617,7 +619,7 @@ UWebSocketGate::UWebSocket::UWebSocket(Poco::Net::HTTPServerRequest* _req,
iosend.set<UWebSocketGate::UWebSocket, &UWebSocketGate::UWebSocket::send>(this);
iorecv.set<UWebSocketGate::UWebSocket, &UWebSocketGate::UWebSocket::read>(this);
maxsize = maxsend * 10; // пока так
maxsize = maxsend * Kbuf;
setReceiveTimeout(uniset::PassiveTimer::millisecToPoco(recvTimeout));
setMaxPayloadSize(sizeof(rbuf));
......@@ -748,7 +750,10 @@ void UWebSocketGate::UWebSocket::read( ev::io& io, int revents )
}
if( (flags & WebSocket::FRAME_OP_BITMASK) == WebSocket::FRAME_OP_CLOSE )
{
term();
return;
}
if( n == sizeof(rbuf) )
{
......@@ -853,7 +858,7 @@ void UWebSocketGate::UWebSocket::sensorInfo( const uniset::SensorMessage* sm )
if( jbuf.size() > maxsize )
{
mywarn << req->clientAddress().toString() << " lost messages..." << endl;
mywarn << req->clientAddress().toString() << " lost messages...(maxsize=" << maxsize << ")" << endl;
return;
}
......@@ -926,7 +931,7 @@ void UWebSocketGate::UWebSocket::sendShortResponse( sinfo& si )
{
if( jbuf.size() > maxsize )
{
mywarn << req->clientAddress().toString() << " lost messages..." << endl;
mywarn << req->clientAddress().toString() << "(sendShortResponse): lost messages (maxsize=" << maxsize << ")" << endl;
return;
}
......@@ -942,7 +947,7 @@ void UWebSocketGate::UWebSocket::sendResponse( sinfo& si )
if( jbuf.size() > maxsize )
{
mywarn << req->clientAddress().toString() << " lost messages..." << endl;
mywarn << req->clientAddress().toString() << "(sendResponse): lost messages (maxsize=" << maxsize << ")" << endl;
return;
}
......@@ -956,7 +961,7 @@ void UWebSocketGate::UWebSocket::sendError( const std::string& msg )
{
if( jbuf.size() > maxsize )
{
mywarn << req->clientAddress().toString() << " lost messages..." << endl;
mywarn << req->clientAddress().toString() << "(sendError): lost messages (maxsize=" << maxsize << ")" << endl;
return;
}
......@@ -1191,7 +1196,10 @@ void UWebSocketGate::UWebSocket::setSendPeriod ( const double& sec )
void UWebSocketGate::UWebSocket::setMaxSendCount( size_t val )
{
if( val > 0 )
{
maxsend = val;
maxsize = maxsend * Kbuf;
}
}
// -----------------------------------------------------------------------------
void UWebSocketGate::UWebSocket::setMaxCmdCount( size_t val )
......
......@@ -169,7 +169,7 @@ namespace uniset
- "get:id1,id2,name3,..." - получить текущее значение датчиков (разовое сообщение ShortSensorInfo)
Если длинна команды превышает допустимое значение, то возвращается ошибка
Если длина команды превышает допустимое значение, то возвращается ошибка
\code
{
"data": [
......@@ -177,6 +177,9 @@ namespace uniset
]
}
\endcode
\warning Под хранение сообщений для отправки выделяется Kbuf*maxSend. Kbuf в текущей реализации равен 10.
Т.е. если настроено maxSend=5000 сообщений, то буфер сможет максимально хранить 50000 сообщений.
*/
class UWebSocketGate:
public UniSetObject,
......@@ -252,8 +255,8 @@ namespace uniset
double wsHeartbeatTime_sec = { 3.0 };
double wsSendTime_sec = { 0.5 };
size_t wsMaxSend = { 200 };
size_t wsMaxCmd = { 100 };
size_t wsMaxSend = { 5000 };
size_t wsMaxCmd = { 200 };
static Poco::JSON::Object::Ptr to_json( const uniset::SensorMessage* sm, const std::string& err );
static Poco::JSON::Object::Ptr error_to_json( const std::string& err );
......@@ -320,8 +323,9 @@ namespace uniset
ev::timer iosend;
double send_sec = { 0.5 };
size_t maxsend = { 200 };
size_t maxcmd = { 100 };
size_t maxsend = { 5000 };
size_t maxcmd = { 200 };
static int Kbuf = { 10 }; // коэффициент для буфера сообщений (maxsend умножается на Kbuf)
ev::timer ioping;
double ping_sec = { 3.0 };
......
......@@ -2,4 +2,4 @@
ulimit -Sc 1000000
uniset2-start.sh -f ./uniset2-wsgate --confile test.xml --ws-name UWebSocketGate1 --ws-log-add-levels any --ws-max-cmd 3 $*
uniset2-start.sh -f ./uniset2-wsgate --confile test.xml --ws-name UWebSocketGate1 --ws-log-add-levels crit,warn,level1 $*
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment