Primeiro, criei uma nova pasta Hubs dentro do projeto
Além disso, crie um novo arquivo PositionVehicle sob a pasta, como mostrado na figura a seguir:
Reconstrua o projeto, e então referenciamos os dois arquivos js seguintes na página de visualização
Nota!!!
O arquivo "/Scripts/jquery.signalR-2.2.2.min.js" é adicionado à instalação do SignalR e existe no disco físico
"/signalr/hubs" éSignalR é gerado automaticamente, que não pode ser encontrada no disco físico!
Vamos dar uma olhada no arquivo js gerado pelo SignalR, da seguinte forma:
/*! * ASP.NET Biblioteca JavaScript SignalR v2.2.2 * http://signalr.net/
* * Direitos autorais (c) Fundação .NET. Todos os direitos reservados. * Licenciado sob a Licença Apache, Versão 2.0. Veja License.txt na raiz do projeto para informações sobre licença.
* */
<caminho de referência="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> <caminho de referência="jquery.signalR.js" /> (função ($, janela, indefinida) { <nome do param="$" type="jQuery" /> "use rigoroso";
if (typeof ($.signalR) !== "função") { lançar um novo Error("SignalR: SignalR não está carregado. Por favor, certifique-se de que jquery.signalR-x.js seja referenciado antes de ~/signalr/js."); }
var signalR = $.signalR;
function makeProxyCallback(hub, callback) { função return () { Chame o método do hub cliente callback.apply(hub, $.makeArray(argumentos)); }; }
function registerHubProxies(instance, shouldSubscribe) { var key, hub, memberKey, memberValue, subscriptionMethod;
para (chave em instância) { if (instance.hasOwnProperty(key)) { hub = instância[chave];
se (!( hub.hubName)) { Não é um hub de cliente continue; }
if (shouldSubscribe) { Queremos nos inscrever nos eventos do hub subscriptionMethod = hub.on; } else { Queremos cancelar a inscrição dos eventos do hub subscriptionMethod = hub.off; }
Faça looping por todos os membros no hub e encontre funções do hub cliente para assinar/cancelar a inscrição for (memberKey in hub.client) { if (hub.client.hasOwnProperty(memberKey)) { memberValue = hub.client[memberKey];
if (!$.isFunction(memberValue)) { Não é uma função de hub de cliente continue; }
subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue)); } } } } }
$.hubConnection.prototype.createHubProxies = function () { var proxies = {}; this.starting(function () { Registre os proxies do hub como assinados (instância, deveriaAssinar) registerHubProxies (proxies, verdadeiro);
this._registerSubscribedHubs(); }).desconectado(função () { Desassinar todos os proxies do hub quando "desconectarmos". Isso é para garantir que não adicionemos chamadas funcionais novamente. (instância, deveriaAssinar) registerHubProxies (proxies, falso); });
proxies['VeículoPosição'] = isto.criarProxy Hub('VeículoPosição'); proxies['positionVehicle'].client = { }; proxies['positionVehicle'].server = { Olá: Função (nome) { return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments))); } };
devolver proxies; };
signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false }); $.extend(signalR, signalR.hub.createHubProxies());
}(window.jQuery, janela));
Então, vamos testar e o código é o seguinte:
Os resultados dos testes são os seguintes:
As duas primeiras mensagens que recebemos foram enviadas por nós mesmos, e também recebemos, e a terceira mensagem foi enviada por mim, que abri outro navegador, e também recebemos.
Quando recebi a mensagem, não era um websocket, mas sim uma consulta HTTP, porque nosso js reportou um erro
Quanto ao motivo do erro de js ter sido reportado, vamos falar sobre isso na próxima vez.
|