2

私は、 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: { ... }});

私が何か間違ったことをしているなら、あなたは提案できますか?ありがとう

4

0 に答える 0