2016-12-22 9 views
0

以下のようにPrimus websocketサービスをセットアップしました。Primusミドルウェアを使用してsparkインスタンスを取得する方法

http = require('http'); 
server = http.createServer(); 

Primus = require('primus'); 
primus = new Primus(server, { 
    transformer: 'websockets', 
    pathname: 'ws' 
}); 

primus.on('connection', function connection(spark) { 
    console.log("client has connected"); 
    spark.write("Herro Client, I am Server"); 
    spark.on('data', function(data) { 
    console.log('PRINTED FROM SERVER:', data); 
    spark.write('receive '+data) 
    }); 
    spark.on('error', function(data) { 
    console.log('PRINTED FROM SERVER:', data); 
    spark.write('receive '+data) 
    }); 
}); 



server.listen(5431); 
console.log("Server has started listening"); 

正常に動作します。上記のコードでは、私はspark.writeを使用してユーザーに応答メッセージを送信します。今私はそれをミドルウェアで使用するために変換したい。 コードは以下のようになり:doStuff()メソッドで

primus.use('name', function (req, res, next) { 
    doStuff(); 
}); 

を、私はクライアントに戻ってメッセージを送信するためにスパークインスタンスを取得できますか?

答えて

0

readmeはこれについて少し曖昧ですが、ミドルウェアはHTTPリクエストのみを扱います。

プリムスには機能を拡張する2つの方法があります。プラグインはありますが、ミドルウェアもサポートしています。そして、これらの間には重要な違いがあります。ミドルウェアレイヤーを使用すると、着信要求がトランスフォーマに渡される前に変更することができます。プラグインを使用すると、スパークを修正して対話することができます。ミドルウェア層は、Primusによって処理される要求に対してのみ実行されます。

目的を達成するには、プラグインを作成する必要があります。ミドルウェアほど複雑ではありません。

primus.plugin('herro', { 
    server: function(primus, options) { 
    primus.on('connection', function(spark) { 
     spark.write('Herro Client, I am Server') 
    }) 
    }, 
    client: function(primus, options) {} 
}) 

詳細情報については、READMEのPluginsセクションを参照してください。

関連する問題