J'essaye d'obtenir une connexion de hub super simple fonctionnant entre domaines mais sans chance. J'ai lu des dizaines de messages et fait tout ce qui est mentionné mais toujours pas de succès.
Mon hub serveur est ici
public class ChatHub : Hub
{
public void Send(string name, string message)
{
Clients.All.broadcastMessage(name, message);
}
}
L'appel de mon serveur MapHubs est ici
RouteTable.Routes.MapHubs(new HubConfiguration { EnableCrossDomain = true });
Tout mon client javascript est ici
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script src="~/Scripts/jquery-2.0.1.min.js"></script>
<script src="~/Scripts/jquery.signalR-1.1.2.min.js"></script>
<script src="/signalr/hubs"></script>
</head>
<body>
<div class="container">
<input type="text" id="displayname" value="Test" />
<input type="text" id="message" value="I'm here" />
<input type="button" id="sendmessage" value="Send" />
</div>
<script type="text/javascript">
$(function ()
{
$.connection.hub.url = 'http://<my url>/';
var chat = $.connection.chatHub;
alert(chat);
$.connection.hub.start().done(function ()
{
alert("Connection succeeded");
}).fail(function ()
{
alert("Connection failed");
});
});
</script>
</body>
</html>
Le problème est qu'il n'atteint jamais les alertes de connexion réussies ou échouées et que l'appel d'alerte (chat) renvoie undefined.
J'ai essayé plusieurs combinaisons pour la ligne $ .connection.hub.url
$.connection.hub.url = 'http://<My url>';
$.connection.hub.url = 'http://<My url>/';
$.connection.hub.url = 'http://<My url>/signalr';
$.connection.hub.url = 'http://<My url>/signalr/';
La console développeur de Chrome et Firebug me donnent l'erreur
Uncaught Error: SignalR: Error loading hubs. Ensure your hubs reference is correct, e.g. <script src='/signalr/hubs'></script>.
Sur le même domaine, cela fonctionne bien. Cela commence vraiment à me rendre fou, donc toute aide serait appréciée.
Merci, Jason
Votre serveur est hébergé sur plusieurs domaines, mais vous essayez d'obtenir les concentrateurs du domaine actuel. Par conséquent, il ne parvient pas à récupérer le fichier hubs et vous n'avez pas réellement de proxy avec lequel travailler (c'est pourquoi tout ne fonctionne pas).
Vous avez donc deux options:
Voici un extrait de code de la façon dont vous pouvez utiliser l'API de connexion concentrateur brut: http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-javascript-client#nogenconnection = (deuxième extrait de code).