WebSocketSubject에서 Blob 개체 역 직렬화

InstilledBee

.NET에서 기본 제공 WebSocketSubject클래스 를 사용하려고합니다 rxjs. 다음과 같이 대부분의 기본 코드를 Angular 서비스로 설정했습니다.

import { Injectable } from '@angular/core';
import { webSocket, WebSocketSubject } from 'rxjs/webSocket';
import { Subscription, from, Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class WebsocketsApiService {
  connection: WebSocketSubject<any>;

  constructor() { 
    this.connection = webSocket({
      url: <websocket URL>,
      closeObserver: {
        next: () => console.log('Sockets disconnected.')
      },
      openObserver: {
        next: () => console.log('Socket connected.')
      }
    });
  }

  connect(observer: (value: any) => void): Subscription {
    return this.connection.subscribe(observer);
  }

  send(data: any) {
    if (this.connection) {
      this.connection.next(data);
    } else {
      console.error('Websockets not connected');
    }
  }

  close() {
    if (this.connection) {
      this.connection.complete();
      this.connection = null;
    }
  }

  ngOnDestroy() {
    this.close();
  }
}

그러나이 기본 코드를 사용하면 웹 소켓 연결에서 들어오는 모든 데이터를 역 직렬화하지 못합니다. 디버깅 할 때 데이터를으로 수신하고 있다는 것을 알았습니다. 이것이 Blob기본 deserializer 함수 JSON.parse(data)가 실패 하는 이유 입니다.

Blob데이터를 문자열로 가져 와서 간단한 사용자 지정 deserializer 함수를 롤링하려고 시도했지만 Blob.text()Promise 인 것으로 밝혀졌으며 이것이 제가 갇혀있는 부분입니다.

constructor() { 
    this.connection = webSocket({
      /// ...
      deserializer: (e) => e.data.text()
    });
}

따라서이 기능을 deserializer로 사용하면이 Websocket 서비스를 구독하는 각 구성 요소가 문자열에 대한 Promise를 가져 오며, 이는 구성 요소에 대한 promise를 해결하는 책임을 연기합니다.

질문 :

  1. 이 현재 접근 방식이 이상적입니까? 각 구독 구성 요소가 약속을 스스로 해결하도록 하시겠습니까?
  2. 가급적이면 문자열 구독자가 개별적으로 구문 분석해야하는 것과 달리 웹 소켓 구독자가 즉시 JSON 객체를 구문 분석하는 더 깨끗한 접근 방식이 있습니까?
프리 두

당신이 가진 내면의 약속의 값으로 매핑 할 수 있습니다 mergeAll/mergeMap, concatAll/concatMap, switchAll/switchMap. concatAll/concatMap들어오는 순서대로 값을 내보내고 싶을 것입니다.

constructor() { 
  this.connection = webSocket({
    /// ...
    deserializer: (e) => e.data.text()
  });
}

connect(observer: (value: any) => void): Subscription {
  return this.connection.pipe(
    concatAll()
  ).subscribe(observer);
}

또는

constructor() { 
  this.connection = webSocket({
    /// ...
    deserializer: ({data}) => data
  });
}

connect(observer: (value: any) => void): Subscription {
  return this.connection.pipe(
    concatMap(data => data.text())
  ).subscribe(observer);
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C #에서 JSON 개체 역 직렬화

분류에서Dev

XML에서 개체 역 직렬화로

분류에서Dev

C # 단일 개체에서 두 Jarray 개체 역 직렬화

분류에서Dev

Java의 개체 내에서 일반 개체 역 직렬화

분류에서Dev

JSON 개체 역 직렬화

분류에서Dev

Swift3에서 객체의 직렬화 및 역 직렬화

분류에서Dev

json에서 RecognizedForm 개체 역 직렬화 (Azure Form Recognizer Python SDK)

분류에서Dev

생성자에서 const 멤버 개체 역 직렬화

분류에서Dev

(역) C #에서 변경된 개체의 직렬화

분류에서Dev

COM을 사용하여 PHP에서 .Net 개체 역 직렬화

분류에서Dev

C #에서 XML을 개체로 역 직렬화하는 방법

분류에서Dev

JSON.NET에서 인터페이스 개체 역 직렬화

분류에서Dev

C #에서 JSON 역 직렬화 : 개체 대 배열

분류에서Dev

DataContractSerializer를 사용하여 개체에서 XML 역 직렬화

분류에서Dev

Kafka 소비자에서 Java 개체 역 직렬화

분류에서Dev

JSON 문자열에서 선택한 JSON 개체 역 직렬화

분류에서Dev

C # 개체 오류에 대한 JSON 응답 역 직렬화

분류에서Dev

C #의 목록이있는 개체에 XML 역 직렬화

분류에서Dev

C ++ MFC에서 이진 직렬화 된 개체를 C #에서 역 직렬화 할 수 있습니까?

분류에서Dev

RMI를 통해 역 직렬화 된 개체로 서버 개체 업데이트

분류에서Dev

파일에서 개체를 역 직렬화 및 재 직렬화하는 데 문제가있는 C # JSON.net

분류에서Dev

웹 서비스 API에서 C # 개체로 XML 문자열 역 직렬화

분류에서Dev

Dictionary에서 상속 된 개체에 대한 C # 역 직렬화 예외

분류에서Dev

Spring 부팅에서 Jackson을 사용하여 날짜 개체 역 직렬화

분류에서Dev

MongoDb + C #에서 기본 생성자없이 개체 역 직렬화

분류에서Dev

C #에서 Newtonsoft를 사용하여 중첩 된 JSON 개체의 역 직렬화

분류에서Dev

컨트롤러에서 json 개체를 역 직렬화 할 수 없습니다.

분류에서Dev

Newtonsoft는 Collection <Item>에서 확장되는 개체를 역 직렬화합니다.

분류에서Dev

URL에서 C #의 List <T>로 여러 Json 개체 역 직렬화

Related 관련 기사

  1. 1

    C #에서 JSON 개체 역 직렬화

  2. 2

    XML에서 개체 역 직렬화로

  3. 3

    C # 단일 개체에서 두 Jarray 개체 역 직렬화

  4. 4

    Java의 개체 내에서 일반 개체 역 직렬화

  5. 5

    JSON 개체 역 직렬화

  6. 6

    Swift3에서 객체의 직렬화 및 역 직렬화

  7. 7

    json에서 RecognizedForm 개체 역 직렬화 (Azure Form Recognizer Python SDK)

  8. 8

    생성자에서 const 멤버 개체 역 직렬화

  9. 9

    (역) C #에서 변경된 개체의 직렬화

  10. 10

    COM을 사용하여 PHP에서 .Net 개체 역 직렬화

  11. 11

    C #에서 XML을 개체로 역 직렬화하는 방법

  12. 12

    JSON.NET에서 인터페이스 개체 역 직렬화

  13. 13

    C #에서 JSON 역 직렬화 : 개체 대 배열

  14. 14

    DataContractSerializer를 사용하여 개체에서 XML 역 직렬화

  15. 15

    Kafka 소비자에서 Java 개체 역 직렬화

  16. 16

    JSON 문자열에서 선택한 JSON 개체 역 직렬화

  17. 17

    C # 개체 오류에 대한 JSON 응답 역 직렬화

  18. 18

    C #의 목록이있는 개체에 XML 역 직렬화

  19. 19

    C ++ MFC에서 이진 직렬화 된 개체를 C #에서 역 직렬화 할 수 있습니까?

  20. 20

    RMI를 통해 역 직렬화 된 개체로 서버 개체 업데이트

  21. 21

    파일에서 개체를 역 직렬화 및 재 직렬화하는 데 문제가있는 C # JSON.net

  22. 22

    웹 서비스 API에서 C # 개체로 XML 문자열 역 직렬화

  23. 23

    Dictionary에서 상속 된 개체에 대한 C # 역 직렬화 예외

  24. 24

    Spring 부팅에서 Jackson을 사용하여 날짜 개체 역 직렬화

  25. 25

    MongoDb + C #에서 기본 생성자없이 개체 역 직렬화

  26. 26

    C #에서 Newtonsoft를 사용하여 중첩 된 JSON 개체의 역 직렬화

  27. 27

    컨트롤러에서 json 개체를 역 직렬화 할 수 없습니다.

  28. 28

    Newtonsoft는 Collection <Item>에서 확장되는 개체를 역 직렬화합니다.

  29. 29

    URL에서 C #의 List <T>로 여러 Json 개체 역 직렬화

뜨겁다태그

보관