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();
相关链接
- GitHub 仓库:enisdenjo/graphql-ws
- npm 包:graphql-ws
注:以上示例为简化用法,完整配置(如认证、上下文、连接生命周期管理等)请参阅官方文档。
帮助我们改进文档
发现翻译问题或内容错误?请告诉我们。
