尝试使用订阅者时出现“[Network] undefined” - URQL

问题描述

我正在尝试设置订阅者以记录有关创建新 Message 的一些输出

目前使用 Urql,后端使用 ApolloServerExpress。

我在登录到控制台的 useSubscription 方法中收到错误

message: "[Network] undefined"
name: "CombinedError"

我确信我的后端正在工作,因为我可以使用 Graphiql 游乐场订阅就好了。 就前端而言,我几乎完全按照 Urql 文档中的示例进行操作。

WS 客户端:

const wsClient = createWSClient({
  url: "ws://localhost:4000/graphql",});

订阅者交换:

subscriptionExchange({
  forwardSubscription(operation) {
    return {
      subscribe: (sink) => {
        const dispose = wsClient.subscribe(operation,sink);
        return {
          unsubscribe: dispose,};
      },};
  },}),

消息列表组件:

const newMessages = `
subscription Messages {
  newMessage {
    content
    status
    sender {
      id
      email
    }
    recipient {
      id
      email
    }
  }
}
`;

...

  const handleSub = (messages: any,newMessage: any) => {
    console.log("Messages: ",messages);
    console.log("newMessages: ",newMessage);
  };
  const [res] = useSubscription({ query: newMessages },handleSub);

  console.log("Res: ",res);

解决方法

最后选择了 graphql-ws 并切换到 subscriptions-transport-ws

解决了我的问题。