Je travaille sur une application permettant d'effectuer une synchronisation de contexte entre plusieurs applications hébergées sur le web en utilisant SignalR. L'ordinateur client instancie un hôte à l'aide de l'hôte SignalR Owin et les applications s'y connectent avec une version sans proxy du client JS. Le problème que j'ai est que les applications "Client" sont hébergées dans des environnements SSL que l'hôte SignalR n'est pas (comme il est contraint à la machine locale). Si j'essaie de me connecter au Hub à partir d'un site Web standard non-SSL hébergeant le client javascript, tout fonctionne. Dès que je charge le client sur un site SSL, je reçois un "SignalR: Erreur lors de la demande de négociation: non défini" lorsque j'essaie de démarrer la connexion. Quelqu'un sait-il comment contourner cela?SignalR: Connexion du client JS sur la page SSL à SelfHost n'utilisant pas SSL
Hôte:
public class SignalRHost : IDisposable
{
private IDisposable _webApp;
public SignalRHost(string url = "http://localhost:9000/")
{
_webApp = WebApplication.Start<Startup>(url);
}
public class Startup
{
public void Configuration(IAppBuilder app)
{
bool enableErrorDetail = false;
#if DEBUG
enableErrorDetail = true;
#endif
app.MapHubs(new HubConfiguration { EnableCrossDomain = true, EnableDetailedErrors = enableErrorDetail });
}
}
public void Dispose()
{
_webApp.Dispose();
}
}
JS Client:
(function (ns_HubClient) {
ns_HubClient.connection;
ns_HubClient.proxy;
ns_HubClient.initialize = function() {
ns_HubClient.connection = $.hubConnection("http://localhost:9000");
ns_HubClient.proxy = ns_HubClient.connection.createHubProxy("fluencyHub");
ns_HubClient.proxy.on('addMessage', function (data) { ns_HubClient.processMessage(data); });
ns_HubClient.connection.start()
.done(function() {
alert("connection complete");
})
.fail(function (data) {
alert("connection start failed: " + data);
});
};
ns_HubClient.login = function (sUserName, sPassword, sDomain) {
var fluencyMessage = {
MessageId: "",
CallType: "Asynchronous",
Method: "Login",
Status: "",
Response: {},
Request: {
sUserName: sUserName,
sPassword: sPassword,
sDomain: sDomain
}
};
ns_HubClient.sendMessage(fluencyMessage);
};
ns_HubClient.writeLog = function (message, errorLevel) {
var logMessage = {
ErrorLevel: errorLevel,
Message: message
};
ns_HubClient.proxy.invoke("logMessage", logMessage);
};
ns_HubClient.processMessage = function (message) {
};
ns_HubClient.sendMessage = function (data) {
ns_HubClient.proxy.invoke("addMessage", data);
};
} (window.ns_HubClient = window.ns_HubClient || {}));