Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 30231|Resposta: 1

[Fonte] O SignalR não usa o protocolo websocket para se comunicar

[Copiar link]
Publicado em 18/04/2019 17:33:48 | | | |
ASP.NET SignalR é uma biblioteca para desenvolvedores ASP.NET que simplifica o processo de adicionar funcionalidade web em tempo real às suas aplicações. Um recurso web em tempo real é um recurso em que o código do servidor pode enviar conteúdo para um cliente conectado assim que ele fica disponível, em vez de fazer o servidor esperar o cliente solicitar novos dados.

ASP .NET SignalR é uma biblioteca de classes sob ASP .NET, que pode realizar comunicação em tempo real em projetos web ASP .NET (ou seja, o cliente (página web) e o lado do servidor podem se notificar mutuamente em tempo real e chamar métodos). SignalR possui três modos de transmissão: LongLooping (longa polling), WebSocket (HTML5 WEB socket), Forever Frame ( conexões de requisição longas que ocultam o quadro), podem ser explicitamente especificados no cliente WEB ou por padrão (recomendado), se o padrão for adotado,O SignalR selecionará automaticamente o método de transmissão apropriado com base no ambiente do navegador

Como o carregamento dos dados do site é muito lento, a razão é que o pacote de dados é muito grande, a requisição de rede é adequada, e descobre-se que o "ws" está vazio, e então verifica-se que o SignalR não usa o protocolo websocket.

Quando depurei localmente, descobri que o site pode usar o protocolo WS normalmente, ou seja, pode se comunicar normalmente com websockets, e então observar a diferença entre requisições de servidor e rede local, e descobri que é a seguinte:



URL:http://ip/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22positionvehiclevehiclehub%22%7D%5D&_=1555578162378

Local:

{"Url":"/signalr","ConnectionToken":"iX0gmz3XDJpQ62b6eiWK16Quaf+LFlD5aHw1k2oC6dKPz7naDuFmc0M7+xiR72ZjJDuNnMvfZyZF72qJK/4g6FOKAsY5C0uCfViOBXPRJVMBczOXTyCKcztIcugmcBq8" ,"ConnectionId":"50598ad3-b138-458c-a58d-b4f84d23c0e0","KeepAliveTimeout":20.0,"DisconnectTimeOut":30.0,"ConnectionTimeOut":110.0,"TryWebSockets":true," ProtocolVersion":"1.5","TransportConnectTimeout":5.0,"LongPollDelay":0.0}
Servidores:

{"Url":"/signalr","ConnectionToken":"4JbNUOp5/ju8Fljn29tCsFoTitZXk3XfF3tkuc/OYpaEQPawJHi3U1nTtjcJJzK4mVsOn9nAEECZj7h5732aV7tNJDgsasCon9uQwhqXZC5EAZPrAgASueApAjBCpPpE" ,"ConnectionId":"c46e67b1-4fb4-4345-983f-bf2c391d33e0","KeepAliveTimeout":20.0,"DisconnectTimeOut":30.0,"ConnectionTimeOut":110.0,"TryWebSockets":false," ProtocolVersion":"1.5","TransportConnectTimeout":5.0,"LongPollDelay":0.0}
Alguns parâmetros são originalmente diferentes dos locais e do servidor, e eu encontrei issoTryWebSocketsparâmetro, local é verdadeiro, servidor é falso.



Analisando as informações, constata-se que, se o SignalR usar o protocolo WebSocket, as seguintes condições precisam ser atendidas:

  • ASP.NET 4,5
  • IIS 8.0 (Windows Server 2012 ou Windows 8)
  • O recurso WebSockets é ativado no servidor
  • Suporte para WebSockets de navegador



Descobri que a versão IIS no servidor é 7.5,O protocolo WebSocket não é suportado no IIS 7.5



Links de referência:O login do hiperlink está visível.




Anterior:WPF Programador Rest Digital Clock [com código-fonte]
Próximo:"Programador Louco"
Publicado em 22/04/2019 09:24:01 |
Coisas boas, Mark
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com