깃털 js + primus에 의해 websocket을 설정하려고합니다 : https://docs.feathersjs.com/real-time/primus.html. 하지만 나는 서버 측에서 primus로부터 스파크 인스턴스를 얻는 방법을 모른다. 아래는 내 서버 코드입니다.feathersjs-primus를 사용하여 websocket 연결을 설정하는 방법
class SocketService {
create(data, params, callback){
...
}
}
module.exports = function(){
const app = this
let ss = new SocketService()
app.use('socket-shell', ss);
}
위의 코드에서 서버는 create() 메소드에서 클라이언트로부터 메시지를 가져올 수 있습니다. 그런데 어떻게 그 방법으로 primus로부터 spark 인스턴스를 얻을 수 있습니까? spark.write
메서드를 사용하여 클라이언트에 메시지를 다시 보내려고합니다. 다음은
app
.use(compress())
.options('*', cors())
.use(cors())
// .use(favicon(path.join(app.get('public'), 'favicon.ico')))
.use('/', serveStatic(app.get('public')))
.use(bodyParser.json())
.use(bodyParser.urlencoded({extended: true}))
.configure(hooks())
.configure(rest())
.configure(primus({
transformer: 'websockets',
timeout: false,
}, (primus) => {
app.use('socket-shell', function(socket, done){
// Exposing a request property to services and hooks
socket.request.feathers.referrer = socket.request.referrer;
done();
});
}))
.configure(services)
.configure(middleware);
서버 측에 이벤트 리스너를 등록하는 데 사용되지만 클라이언트에서 이벤트를 수신 할 수 없습니다 :
class SocketService {
constructor(options) {
this.events = [ 'someevent','serverevent' ]
}
setup(app) {
this.app = app;
let socketService = app.service('socket-shell')
socketService.addListener('serverevent', this.serverevent)
}
serverevent(msg){
console.log('serverevent', msg)
}
클라이언트 코드에서 아래 코드를 사용하여 서버에 메시지를 내 보냅니다.
var primus = new Primus('http://localhost:3030');
var app = feathers()
.configure(feathers.hooks())
.configure(feathers.primus(primus));
var messageService = app.service('/socket-shell');
messageService.emit('serverevent', {msg:'this is client'})
what wr 위의 코드와 함께?
나는이 있지만 서버를 시도
app.configure(primus(
에 자신의 이벤트를 보내는 서비스가 custom events자신의 방출 적이 : 두 가지 옵션이 있습니다 클라이언트로부터 메시지를받을 수 없습니다. 위 코드를 게시했습니다. –
현재이 작업은 서버에서 클라이언트로 이벤트를 보내는 것입니다. 클라이언트에서 서버로 정보를 보내려면'create','update','patch' 또는'remove' 서비스 메쏘드를 사용해야합니다. 그것이 바로 그것입니다. – Daff