2016-12-22 7 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 요청 만 처리합니다.

프리 머스에는 기능을 확장하는 두 가지 방법이 있습니다. 플러그인이 있지만 미들웨어도 지원합니다. 그리고 이들 사이에 중요한 차이가 있습니다. 미들웨어 계층을 사용하면 들어오는 요청이 변압기에 전달되기 전에 수정할 수 있습니다. 플러그인을 사용하면 스파크를 수정하고 상호 작용할 수 있습니다. 미들웨어 계층은 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 섹션을 참조하십시오.