У меня есть шаблон роутера, использующий пельс. Я использую NetLimiter, чтобы проверить сценарии с низкой пропускной способностью. Когда я засыпаю скорость загрузки и загрузки (ограничена 1 кбит/с) на ноутбуке маршрутизатора через некоторое время, я удаляю дроссель. Дилерский розетка все еще посылает сердцебиение, и я вижу, что он получен на ноутбуке роутера, но он отправляет, казалось бы, пустой рамки назад. Раздел 1 COMS работают. Раздел 2 Коммум дренажаются. Раздел 3 Коммубликулы больше не дросселированы, но теперь RFD больше не является отзывчивым.
router code:
{
Task.Run(async () =>
{
try
{
await onTimerElapsedAsync();// Sends connection heartbeat
}
catch (Exception ex)
{
_log.Error(ex);
}
});
};
using var poller = new NetMQPoller() { routerSocket, timer };
_poller = poller;
routerSocket.ReceiveReady += (s, e) =>
{
try
{
NetMQMessage? message = null;
while (e.Socket.TryReceiveMultipartMessage(ref message))
{
var identity = message[0].ToByteArray();
var identityString = message[0].ConvertToString();
var messageBytes = message[1].ToByteArray();
var messageString = Encoding.UTF8.GetString(messageBytes);
Task.Run(async () =>
{
try
{
await onReceivedAsync(messageString);
}
catch (Exception ex)
{
_log.Error(ex);
}
});
}
}
catch (Exception ex)
{
_log.ThrottledError(ex, message: "Error receiving message from MWD");
}
};
routerSocket.SendReady += (s, e) =>
{
try
{
if (_payload == null || _socketIdentity == null)
{
return;
}
var netMqMessage = new NetMQMessage();
netMqMessage.Append(_socketIdentity);
netMqMessage.AppendEmptyFrame();
netMqMessage.Append(_payload);
e.Socket.SendMultipartMessage(netMqMessage);
MessageSent(true);
}
catch (Exception ex)
{
_log.Error(ex);
}
};
_poller.Run();
_poller.Remove(routerSocket);
_poller.Remove(timer);
}
catch (Exception ex)
{
_log.ThrottledError(ex, message: "Error starting MWD socket");
}
finally
{
NetMQConfig.Cleanup();
}
< /code>
Код дилера: < /p>
try
{
using var dealerSocket = new DealerSocket();
var timer = new NetMQTimer(TimeSpan.FromSeconds(1));
timer.Elapsed += (s, e) =>
{
Task.Run(async () =>
{
try
{
await onTimerElapsedAsync(); // Sends connection heartbeat
}
catch (Exception ex)
{
_log.Error(ex);
}
});
};
using var poller = new NetMQPoller() { dealerSocket, heartbeat };
_poller = poller;
dealerSocket.ReceiveReady += (s, e) =>
{
try
{
NetMQMessage? message = null;
while (e.Socket.TryReceiveMultipartMessage(ref message))
{
var messageBytes = message[1].ToByteArray();
var messageString = Encoding.UTF8.GetString(messageBytes);
Task.Run(async () =>
{
try
{
await onReceivedAsync(messageString);
}
catch (Exception ex)
{
_log.ThrottledError(ex);
}
});
}
}
catch (Exception ex)
{
_log.ThrottledError(ex, message: "Error receiving message from RFD");
}
};
dealerSocket.SendReady += (s, e) =>
{
try
{
if (_message == null || _timeout == null)
{
return;
}
if (e.Socket.TrySendFrame(_timeout, _message))
{
MessageSent(true);
}
else
{
MessageSent(false);
}
}
catch (Exception ex)
{
_log.Error(ex);
}
};
_poller.Run();
_poller.Remove(dealerSocket);
_poller.Remove(timer);
}
catch (Exception ex)
{
_log.Error(ex);
}
finally
{
NetMQConfig.Cleanup();
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... -to-incomi
Роутер маршрутизатора NetMQ - маршрутизатор перестает отправлять сообщения и ответы на входящие сообщения с пустыми кадр ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Получение ошибки 401 при попытке получить входящие входящие спама в Outlook, с Python
Anonymous » » в форуме Python - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-