मैं Nest.js WebSocketGateways में socket.io पावती कॉलबैक के उपयोग को सक्षम करने का प्रयास कर रहा हूं।

मैं इसे उत्सर्जित करने में सक्षम होना चाहता हूं:

socket.emit('event', 'some data', function (response) {
  //do something
})

और इस तरह संदेश हैंडलर का प्रयोग करें:

@SubscribeMessage('event')
onStart(client, data, ack) {
  //Do stuff
  ack('stuff completed');
}

इस Nestjs/nest GitHub मुद्दे के अनुसार पुस्तकालय में इसके लिए कोई समर्थन नहीं है तो आपको अपना खुद का वेबस्केट एडाप्टर बनाना होगा। मैंने कोशिश की लेकिन मुझे यकीन नहीं है कि इसे बिल्कुल कैसे किया जाए। मुझे लगता है कि मुझे bindMessageHandlers समारोह में कुछ खास करने की जरूरत है लेकिन मेरे प्रयास व्यर्थ हैं। यह फ्रेमवर्क में बंडल किए गए डिफ़ॉल्ट सॉकेट.io एडेप्टर में bindMessageHandlers कार्यान्वयन है:

public bindMessageHandlers(
  client,
  handlers: MessageMappingProperties[],
  process: (data: any) => Observable<any>,
) {
  handlers.forEach(({ message, callback }) =>
    Observable.fromEvent(client, message)
      .switchMap(data => process(callback(data)))
      .filter(result => !!result && result.event)
      .subscribe(({ event, data }) => client.emit(event, data)),
  );
}

क्या किसी के पास कोई संकेत है कि मैं इसे लागू करने के बारे में कैसे जाउंगा?

13
awnton 2 अप्रैल 2018, 16:55

2 जवाब

बस SubscribeMessage के रिटर्न स्टेटमेंट का उपयोग करें

// server
@SubscribeMessage('message')
  async onMessage(
    client: Socket, query: string
  ) {
    try {
      console.log(query) 
      return 'hello'
    } catch (e) {
      // ...
    } 
  }

क्लाइंट साइड पर तीसरे परम के रूप में एक फ़ंक्शन का उपयोग करें

// client
this.socket.emit('message', query, (res) => {
  console.log(res); // should log 'hello'
});
0
kenny 6 फरवरी 2020, 21:22

आप इस मॉड्यूल को आजमा सकते हैं: https://www.npmjs.com/ पैकेज/नेस्टज-सॉकेट-हैंडलर-के साथ-एक। यह हुड के तहत पावती फ़ंक्शन को कॉल करता है, आपको केवल कुछ मान वापस करने या त्रुटि फेंकने की आवश्यकता होती है। आशा है कि इससे सहायता मिलेगी

0
Andrew Gura 25 जून 2018, 23:04