Я успешно реализовал SignalR с клиентом Vue.js и сервером .NET Framework 4.8. В среде разработки все работает отлично. Однако при развертывании в другой среде возникает проблема. URL-адрес сервера содержит несколько слешей, и, похоже, соединение SignalR их игнорирует. В то время как методы согласования и прерывания используют правильный URL-адрес, метод подключения — нет. Проверьте скриншоты. Есть ли способ гарантировать, что соединение всегда использует правильный URL-адрес?
Клиент Vue Js.:
Я ожидал, что URL-адрес не изменится. Почему вызов "negotiate" использует правильный URL, а вызов "connect" — нет?
var signalrConnection = $.hubConnection("https://api-dev.***.com/qai/api/***");
var hub = signalrConnection.createHubProxy('eventsHub');
hub.on("started", (data) => {
_that.$store.dispatch('started', { id: data.prId })
});
signalrConnection.start({withCredentials: false, transport: ["serverSentEvents", "longPolling"]}).done(() => {
console.log("Connected, transport = " + signalrConnection.transport.name);
hub.invoke("RegisterForWebNotifications",this.$route.query.id );
}).fail((err) => console.error(err));
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{
EnableDetailedErrors = true,
Resolver = container.Resolve<Microsoft.AspNet.SignalR.IDependencyResolver>(),
EnableJSONP = true,
EnableJavaScriptProxies = true
};
map.RunSignalR(hubConfiguration);
GlobalHost.DependencyResolver = hubConfiguration.Resolver;
});
Александра
Вопрос задан16 июля 2024 г.