使用graphql-ws实现GraphQL订阅需结合WebSocket与发布-订阅模式。1. 安装express、graphql、ws、graphql-ws等依赖;2. 定义含Subscription类型的Schema并编写返回AsyncIterator的解析器;3. 用ws创建WebSocket服务器,通过useServer集成graphql-ws;4. 启动HTTP服务并可选添加express-graphql支持调试界面;5. 前端通过WebSocket连接发送订阅请求,服务端在Mutation中发布事件触发实时推送。关键在于路径一致与正确使用PubSub和AsyncIterator。

要实现一个支持GraphQL订阅的实时API,核心是使用WebSocket来建立持久连接,并结合GraphQL执行机制推送数据更新。Node.js生态中,graphql-ws和subscriptions-transport-ws是主流选择。推荐使用更现代、轻量且兼容性更好的graphql-ws库,配合express和graphql构建完整服务。
先初始化项目并安装关键包:
npm init -y创建基本的Schema,包含查询和订阅类型:
const { buildSchema } = require('graphql');编写解析器,其中订阅返回一个AsyncIterator:
使用ws创建WebSocket服务器,并通过graphql-ws处理订阅消息:
注意:execute和subscribe来自graphql模块,需导入:
让Express处理普通请求,WebSocket处理实时通信:
server.listen(4000, () => { console.log('HTTP服务器运行在 http://localhost:4000'); console.log('WebSocket服务器已启动,路径 /graphql'); });可选:添加express-graphql中间件支持浏览器调试:
在客户端使用graphql-ws或urql等库连接。示例使用原生WebSocket:
当调用addPost mutation时,所有订阅客户端会立即收到更新。
以上就是如何用Node.js实现一个支持GraphQL订阅的实时API?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号