Как получить искровой экземпляр при использовании промежуточного ПО Primus

Я настроил службу веб-сокета Primus, как показано ниже.

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 для отправки сообщения клиентам?

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) {}
})  

Для получения дополнительной информации см. Раздел " Плагины " в файле readme.

Другие вопросы по тегам