React native 使用异步存储的GraphQL订阅身份验证

React native 使用异步存储的GraphQL订阅身份验证,react-native,graphql,express-graphql,React Native,Graphql,Express Graphql,我正在尝试使用我的客户端应用程序上的订阅,使用WebSocketLinkconnectionParams向服务器发送JWT令牌和refreshToken。但问题是,我的令牌和refreshToken保存在AsynStorage中,需要使用async Wait来获取值。 当我尝试使用wait时,它将未定义的数据发送到服务器 代码如下: // Create a WebSocket link: const wsLink = new WebSocketLink({ uri: wsUri,

我正在尝试使用我的客户端应用程序上的订阅,使用WebSocketLinkconnectionParams向服务器发送JWT令牌和refreshToken。但问题是,我的令牌和refreshToken保存在AsynStorage中,需要使用async Wait来获取值。 当我尝试使用wait时,它将未定义的数据发送到服务器

代码如下:

// Create a WebSocket link:
const wsLink = new WebSocketLink({
    uri: wsUri,
    options: {
        reconnect: true,
        connectionParams: async () => {
            return {
                token: await AsyncStorage.getItem('token'),
                refreshToken: await AsyncStorage.getItem('refreshToken')
            }
        }
    }
});

如果我设置一个计划键,它就会工作。但是我需要使用wait从异步存储中获取令牌。我该怎么做呢?

订阅传输ws
的最新版本
0.9.8
中,它仍然不支持
connectionParams
返回承诺。但它有一个与此问题相关的拉取请求,您可以在@Tu中引用它ấnTrầ恩迪。谢谢你的链接。但它还没有被合并。我可以在我的node_模块中编辑代码并检查它是否可以工作吗?你可以自己分叉并编辑它,或者只是更改
SubscriptionClient.prototype.connect中的一些代码
客户端中的
文件
node_模块中的
文件
我现在刚刚尝试更改文件,但是pull请求中的是正常的Js代码,但我发现的是打字稿。PR引用src/client.ts,但我在文件夹中找到的是dist/client.js是的,您可以在
dist/client.js
中进行更改,只需找到
SubscriptionClient.prototype.connect
并像pull-request那样编辑它。但是,您应该为长期使用而分叉该项目、编辑和构建。