我有一个基于 NET 4.8 构建的 ASP.NET 应用程序,其中包括使用 Microsoft.AspNet.SignalR 2.4.3 的 SignalR 客户端,并且我需要从 JS 调用使用 Microsoft.AspNetCore.SignalR 6.0.1 构建的 SignalR 服务器
服务器开发者提供的服务器URL是https://api.myservice.com/signalR/main,我需要调用一个方法名称JoinSession
服务器开发人员告诉我在没有集线器的情况下进行呼叫,但我不知道如何从 AspNet.SignalR 2.4.3 执行此操作。或者尝试使用“MainHub”作为集线器名称,但这不起作用。
我尝试了以下代码
let connection = j$.hubConnection('https://api.myservice.com/signalR/main');
let hubProxy = connection.createHubProxy('MainHub');
//Start the connection
connection.start().done(function () {
// Call the server method
hubProxy.invoke('JoinSession', uID, "mySession").done(function () {
console.log('JoinSession successfully');
}).fail(function (error) {
console.error('Error invoking JoinSession: ' + error);
});
}).fail(function (error) {
console.error('Error starting connection: ' + error);
});
当我尝试此代码时,出现以下错误
GET https://api.myservice.com/signalR/main/signalr/negotiate?clientProtocol=2.1&connectionData=%5B%5D&_=1709211174237 404 (Not Found)
Error starting connection: Error: Error during negotiation request
注意 SignalR JS 代码在我的 url 末尾添加的附加信号字符串
服务器开发建议我尝试这个
var connection = new signalR.HubConnectionBuilder()
.withUrl("https://api.myservice.com/signalR/main")
.build();
// Start the connection
connection.start().then(function () {
//...
})
但这不起作用,因为 AspNet.SignalR 2.4.3 中没有方法 HubConnectionBuilder
我该怎么办? 如何从 2.4.3 AspNet SignalR 客户端调用 6.0.1 AspNetCore SignalR 服务器?
一些附加信息 客户端应用程序本身也在客户端和后端之间使用 SignalR。
SignalR 在启动时配置如下(以允许客户端大小直接与后端交互
<Assembly: OwinStartup(GetType(SignalRConfig))>
Public Class SignalRConfig
Public Sub Configuration(app As IAppBuilder)
app.MapSignalR("/signalr", New Microsoft.AspNet.SignalR.HubConfiguration())
End Sub
End Class
然后从本地客户端我可以访问本地 SignalR 服务器代码
// init SignalR MapAssetID client
let tmHub = null;
try {
tmHub = j$.connection.tmHub;
} catch (e) {
console.error('Cannot access SignalR tmHub')
}
稍后我可以使用SignalR
if (tmHub) {
tmHub.client.updateMapAssetID = _updateMapAssetID;
j$.connection.hub.start();
}
这一切都很好
我怀疑我可能需要向 SignalRConfig 类添加一些额外的配置,以使客户端与远程 AspNetCore 服务器正确交互,但我不知道要查找什么以及在哪里查找。
简短的回答,你不能一起使用它们。 CORE 版本是重写的。您可以通过此问题在此处查看更多信息。