私は、SignalRを使用して複数のWebホストアプリケーション間でコンテキスト同期を実行するアプリケーションに取り組んでいます。クライアントマシンは、SignalR Owinホストを使用してホストをインスタンス化し、アプリケーションは、プロキシなしのバージョンのJSクライアントを使用してホストに接続します。私が抱えている問題は、「クライアント」アプリケーションがSSL環境でホストされていることです(ローカルマシンに制約されているため)。javascriptクライアントをホストしている標準の非SSLWebサイトからハブに接続しようとすると、すべてが機能します。ただし、クライアントをSSL Webサイトにロードするとすぐに、接続を開始しようとすると「SignalR:ネゴシエーション要求中のエラー:未定義」が表示されます。誰かがこれを回避する方法を知っていますか?
亭主:
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クライアント:
(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 || {}));