gpt4 book ai didi

javascript - 在 signalR 核心启动时设置自定义 ID

转载 作者:行者123 更新时间:2023-11-29 22:46:44 25 4
gpt4 key购买 nike

我正在构建一个涉及 1:1 客户和管理员 session 的应用程序。我正在使用 opentok 将客户与管理员联系起来,并为他们的 session 创建一个唯一的 ID。将有多个客户:管理员 session ,但每个 session 都应该是唯一的。

我正在使用 React 和 asp.net core 3。

我希望能够在客户和管理员之间建立私有(private) Signal R 连接。没有授权设置,它全部基于将在查询字符串中提供的唯一 ID。

目前我正在像这样连接到 React 中的 Signal R:

import { HubConnectionBuilder } from '@aspnet/signalr';
import { useState, useEffect } from "react";
import config from "config.js";

export default function useSignalR() {
const [hubConnection, setHubConnection] = useState(null);

useEffect(() => {
//ideally ill supply the connection a guid here
let connectionBuilder = new HubConnectionBuilder()
.withUrl(config.signalRServerUrl)
.build();

setHubConnection(connectionBuilder);
connectionBuilder.start()
.then(() => console.log("signalr connection started"))
.catch((err) => console.log("Error while establishihng connection ", err));
}, []);

return hubConnection;
}

管理员和客户使用相同的功能连接到 asp.net 核心信号 R 集线器,目前看起来像这样:

public class PhotoHub : Hub
{
public async Task TakeSnapShot()
{
await Clients.All.SendAsync("takeSnapShot");
}
}

我想它看起来像这样:

仅伪代码

 //in javascript connection
let connectionBuilder = new HubConnectionBuilder()
.withProperty(uniqueId) //pseudo code
.withUrl(config.signalRServerUrl)
.build();

<-- 在下面的服务器上 -->

public class PhotoHub : Hub
{
public async Task TakeSnapShot(uniqueId)
{
var clientsInSession = Clients.where(customId == uniqueId); //pseudo code
foreach (var client in clientsInSession){
await client.SendAsync("takeSnapShot"); //pseudo code
}
}
}

最佳答案

当您在集线器中使用此代码连接到集线器时,SignalR 已经提供了唯一的连接 ID

    public string GetConnectionId()
{
return Context.ConnectionId;
}

所以你可以这样调用

 var connection = new signalR.HubConnectionBuilder().withUrl("/connectionHub").build();

connection.start().then(function () {
console.log("connected");

connection.invoke('getConnectionId')
.then(function (connectionId) {
console.log(connectionId)
}).catch(err => console.error(err.toString()));;

});

关于javascript - 在 signalR 核心启动时设置自定义 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58265237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com