【问题标题】:How to get spark instance on using Primus middleware如何使用 Primus 中间件获取 spark 实例
【发布时间】:2017-01-26 22:25:15
【问题描述】:

我已经设置了一个 Primus websocket 服务,如下所示。

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 向用户发送响应消息。现在我想将它转换为在中间件中使用。 代码如下:

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

在 doStuff() 方法中,如何让 spark 实例将消息发送回客户端?

【问题讨论】:

    标签: node.js primus


    【解决方案1】:

    readme 对此有点模糊,但中间件只处理 HTTP 请求。

    Primus 有两种扩展功能的方法。我们有插件,但也支持中间件。这些之间有一个重要的区别。中间件层允许您在传入请求被传递到转换器之前对其进行修改。插件允许您修改火花并与之交互。中间件层仅针对 Primus 处理的请求运行。

    要实现您想要的,您必须创建一个插件。它并不比中间件复杂多少。

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

    有关详细信息,请参阅自述文件的 Plugins 部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      相关资源
      最近更新 更多