Я использую концентратор SignalR
как самостоятельное размещение на службе Windows. Есть клиенты winforms
, которые разговаривают с центром. Сервер работает на порту 80, и он работает нормально.Является ли SignalR приемным портом случайным или может быть предопределено?
Что мне интересно, на каком порте клиент отправляет или получает сообщения?
Насколько я знаю, порт мы покидаем клиентскую машину, а порт, к которому мы приходим на сервер, являются или могут быть разными портами. Машины, на которых мой клиент будет работать, будут короткими на портах (большинство портов закрыты), поэтому я думаю, что мне нужно предопределить порт, который мой клиент покидает машину.
- Я правильно думаю, как это?
- Как создать соединение на стороне клиента, чтобы клиентский порт всегда был таким же?
Вот мой код клиента:
IHubProxy _TextCopierHub;
HubConnection _HubConnection { get; set; }
public TextCopierHub (string url)
{
_HubConnection = new HubConnection(url);
_TextCopierHub = _HubConnection.CreateHubProxy("TextCopierHub");
_HubConnection.Credentials = CredentialCache.DefaultCredentials;
if (!_HubConnection.Start().Wait(10000))
throw new TimeoutException("Hub didn't start in 10 seconds");
RegisterEvents();
}
примечание: Я не в состоянии моделировать среду клиента, поэтому я даже не уверен, что это будет проблемой или нет, но я не хотим удивлять, когда мы устанавливаем клиентов, так как клиент указал это требование.
Итак, вы говорите, что оно автоматическое и не может быть обработано явно. Тогда, допустим, все порты закрыты на брандмауэре, кроме немногих, сможет ли он найти и выбрать один из этих доступных портов и работать? Или это случайно не получится? –
@TolgaEvcimen Я не уверен, как настроен ваш брандмауэр, но обычно брандмауэры блокируют входящие порты и, как правило, исходящие. В этом случае исходящие от вашего клиента на сервер –
Эти клиенты являются исключительными клиентами, поэтому да брандмауэры настроены строго. –