首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用apollo link-ws中的WebSocketLink检查互联网连接

使用apollo link-ws中的WebSocketLink检查互联网连接
EN

Stack Overflow用户
提问于 2018-06-16 20:12:23
回答 2查看 3.1K关注 0票数 5

我正在尝试使用apollo websockets检查互联网连接,这样做的目的是在没有连接时显示一条“you‘s disconnected”消息,以防止用户键入并假定更改已保存(更改应保存在type中),以下是apollo link-ws设置的一部分

代码语言:javascript
复制
const wsLink = new WebSocketLink({
uri: `ws://${hostname}${port ? `:${port}` : ''}/subscriptions`,
options: {
 reconnect: true,
 connectionParams: () => ({
  authorization: localStorage.getItem('accelerator-token')
 })
}
});

代码语言:javascript
复制
    const hasSubscriptionOperation = ({ query: { definitions } }) =>
    definitions.some(
    ({ kind, operation }) =>
      kind === 'OperationDefinition' && operation === 'subscription'
  );

下面是客户端配置:

代码语言:javascript
复制
const client = new ApolloClient({
link: ApolloLink.split(
    hasSubscriptionOperation,
    wsLink,
    ApolloLink.from([
      cleanTypenameLink,
      authMiddleware,
      errorLink,
      stateLink,
      createUploadLink()
    ])
  ),
  cache
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-17 10:31:19

经过一些搜索之后,我发现我可以从订阅-传输-ws中使用SubscriptionClient

代码语言:javascript
复制
export const myClient = new SubscriptionClient(`ws://${hostname}${port ? 
`:${port}` : ''}/subscriptions`, {
 reconnect: true,
 connectionParams: () => ({
  authorization: localStorage.getItem('accelerator-token')
 })
});
myClient.onConnected(()=>{console.log("connected f client f onConnected")})
    myClient.onReconnected(()=>{console.log("connected f client f 
reconnected")})
myClient.onReconnecting(()=>{console.log("connected f client  f 
reconnecting")})
myClient.onDisconnected(()=>{console.log("connected f client  f 
onDisconnected")})
myClient.onError(()=>{console.log("connected f client  f onError")})
export const wsLink = new WebSocketLink(myClient);

这些方法可用于检测网络状态

票数 6
EN

Stack Overflow用户

发布于 2019-03-05 08:31:01

如果您正在使用React,我发现了这个很好的社区包react-apollo-network-status

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50887793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档