私は、 graphql-subscriptionsを利用する React フロントエンドと、MQTT ブローカー(およびその Web ソケット ハンドラー) とサブスクリプション サーバーを備えた Node.js アプリの 2 つの部分で構成されるアプリケーションを持っています。
here で述べたように、(動作している)デフォルトの実装を使用する代わりにPubSub
、外部の PubSub エンジンを実装しようとしています。このために、graphql-redis-subscriptionsを選択しました。メッセージがサーバーに到達するたびに、次のエラーが発生します。
2018-03-27 14:52:03: assert.js:42
throw new errors.AssertionError({
^
AssertionError [ERR_ASSERTION]: undefined == true
at MQEmitterRedis.emit (node_modules/mqemitter/mqemitter.js:98:3)
at handler (node_modules/mqemitter-redis/mqemitter-redis.js:36:12)
at Redis.<anonymous> (node_modules/mqemitter-redis/mqemitter-redis.js:46:5)
at emitThree (events.js:136:13)
at Redis.emit (events.js:217:7)
at Redis.exports.returnReply ( node_modules/ioredis/lib/redis/parser.js:119:14)
at JavascriptRedisParser.returnReply ( node_modules/ioredis/lib/redis/parser.js:27:13)
at JavascriptRedisParser.execute ( node_modules/redis-parser/lib/parser.js:574:12)
at Socket.<anonymous> ( node_modules/ioredis/lib/redis/event_handler.js:107:22)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
at Socket.Readable.push (_stream_readable.js:208:10)
at TCP.onread (net.js:594:20)
ここで何が起こっているのか理解できません。コードを見ると、引数が undefined であるため、この assert が失敗しているようです。PubSub.js
何かを公開する必要があるときにインポートされるファイルの構成は次のとおりです。
import { RedisPubSub } from 'graphql-redis-subscriptions';
import config from '../config/getConfig';
const { port, host } = config.redisConf;
// Options listed here: https://github.com/luin/ioredis/blob/master/API.md#new_Redis_new
const pubsub = new RedisPubSub({
connection: {
host,
port,
retry_strategy: options => Math.max(options.attempt * 100, 3000),
},
});
export default pubsub;
次に、別のファイルにインポートimport pubSub from '../../helpers/PubSub';
して、次のコードを使用してトピックを公開します。
pubSub.publish(topic, { operation: { ... }});
私が何か間違ったことをしているなら、あなたは提案できますか?ありがとう