知海

JavaScript:graphql-ws(WebSocket 通信)

graphql-github-io-zh-Hans生态项目与库

JavaScript:graphql-ws(WebSocket 通信)

简介

graphql-ws 是一个零依赖、简单易用且符合 GraphQL over WebSocket 协议 的服务端与客户端实现。它提供了一套连贯的 API,支持在 WebSocket 上执行 GraphQL 操作(尤其是订阅),并遵循惰性连接的设计理念,帮助开发者高效构建实时应用。

主要特点

  • 零依赖:无需安装额外依赖,即装即用。
  • 协议合规:严格遵循 GraphQL over WebSocket 协议规范,保证跨平台兼容性。
  • 惰性连接:仅在需要时建立或维持连接,节省资源。
  • 简单连贯:API 设计简洁直观,易于集成到现有 GraphQL 项目中。

安装

通过 npm 安装:

bash 复制代码
npm install graphql-ws

基本用法

服务端

使用 createServer 创建基于 WebSocket 的 GraphQL 服务:

js 复制代码
import { createServer } from 'graphql-ws';
import { schema } from './schema';

const server = createServer({
  schema,
  // 可在此处理连接上下文、订阅等
});

server.listen(4000, () => {
  console.log('GraphQL WebSocket server running at ws://localhost:4000');
});

客户端

使用 createClient 连接服务端并执行订阅:

js 复制代码
import { createClient } from 'graphql-ws';

const client = createClient({
  url: 'ws://localhost:4000',
});

// 订阅消息
const unsubscribe = client.subscribe(
  {
    query: 'subscription { messageAdded }',
  },
  {
    next: (data) => console.log('收到数据:', data),
    error: (err) => console.error('错误:', err),
    complete: () => console.log('订阅完成'),
  }
);

// 取消订阅(按需调用)
unsubscribe();

相关链接

注:以上示例为简化用法,完整配置(如认证、上下文、连接生命周期管理等)请参阅官方文档。

帮助我们改进文档

发现翻译问题或内容错误?请告诉我们。