您好,我想知道如何设置HubConnectionBuilder URL以将我的客户端基于ReactJS函数的应用程序连接到Azure SignalR服务。我正在使用endpoint=https:xxxxxxxxxxxx-signalr.service.signalr.net;AccessKey= m5 QcxLFV +3 Wx + tzxxn 4SUiBqWZUOmzG 8 nix 4 OxxxOhg 4 =;Version=1.0;如下所示:
useEffect(() => {
console.log('testing const2');
const newConnection = new HubConnectionBuilder()
.withUrl('Endpoint=https://xxxxxxxxxxxx- signalr.service.signalr.net;AccessKey=m5QcxLFV+3Wx+tzMZn4SUiBqWZUOmxxxxix4O1pOhg4=;Version=1.0;')
.withAutomaticReconnect()
.build();
setConnection(newConnection);
}, []);
希望与Azure SignalR服务建立连接。有人能告诉我如何正确设置此错误吗?
Cannot POST /Endpoint=https://xxxxxxxxxx-signalr.service.signalr.net;AccessKey=m5QcxLFV+3WxxxxxZn4SUiBqWZUOmzG8nix4O1pOhg4=;Version=1.0;/negotiate
:状态代码'404'这不是SignalR端点,或者有代理阻止连接。
2条答案
按热度按时间3pmvbmvn1#
我仍在研究,但基本上使用Azure SignalR服务,您可以使用Azure Function获取带有客户端或访问令牌的URL。它返回客户端应用程序(AKA ReactJS)特定的URL以包含在HubConnectionBuilder的withURL中。这样,出于安全目的,每个客户端都可以获得自己的URL。请确保CORS在Azure资源门户设置中启用所有来源。
eqoofvh92#
您试图输入
SignalR Connection String
作为端点URL。这不正确。您应该在
.withUrl()
中为您的参数输入一个普通的url字符串,指向SignalR服务的client endpoint
。这通常是您在后端服务中Map的端点,实际上可以让SignalR服务确切地知道客户端可以使用哪些方法等。您的连接字符串将按照documentation here.用于后端组件
编辑:为了澄清,即使在无服务器模式下使用SignalR,您也需要额外的组件才能使一切正常工作:
您至少需要一个
/negotiate
端点作为Azure Function托管。然后,此端点将向客户端应用返回必要的连接令牌和详细信息,以便连接并启用消息传递。(此端点还应处理客户端身份验证)。然后,您将需要至少一个Azure Function端点,该端点将负责实际处理SignalR消息的逻辑。你的协商Azure函数应该看起来像这样(取自Tutorial: Azure SignalR Service authentication with Azure Functions):
您的函数触发器配置:
然后,你会想要另一个Azure函数来处理消息传递......例如,广播到所有连接的客户端。
因为从你的问题中并不清楚你到底想让客户端做什么,我不能真正帮助你弄清楚这个函数到底是什么样子的。但是,无论如何,你在上面的链接中有一个工作示例。