위챗 애플릿으로의 Parse-SDK-JS 마이그레이션 여행: 웹소켓

1603 단어
이 부분은 이전requestlocalStorage보다 더 어려웠지만 순조롭게 이식되었다.
위챗 애플릿의 웹소켓은 하나의 연결만 허용하기 때문에 복잡한 상황에서 테스트를 진행하지 않았고 버그가 발견되지 않았습니다.

스크립트 위치 지정


파일: /src/LiveQueryClient.js 함수: _getWebSocketImplementation 코드:
    if (process.env.PARSE_BUILD === 'node') {
      return require('ws');
    } else if (process.env.PARSE_BUILD === 'browser') {
      return typeof WebSocket === 'function' || typeof WebSocket === 'object' ? WebSocket : null;
    } else if (process.env.PARSE_BUILD === 'react-native') {
      return WebSocket;
    }

원리 분석


서로 다른 실행 환경에서 서로 다른 WebSocket 대상을 되돌려주는 것을 볼 수 있지만 이것은 모두 위챗 애플릿이 지원하는 것이 아니다.그래서 저희가 간단한 WebSocket 대상을 다시 써야 돼요.

코드 작성


class WxSocket {
  constructor (url) {
    wx.connectSocket({
      url
    });

    wx.onSocketOpen((ret) => {
      this.onopen && this.onopen(ret);
    });

    wx.onSocketError(err => {
      this.onerror && this.onerror(err);
    });

    wx.onSocketMessage(msg => {
      this.onmessage && this.onmessage(msg);
    });

    wx.onSocketClose(() => {
      this.onclose && this.onclose();
    })
  }

  send (data) {
    wx.sendSocketMessage({
      data
    })
  }

  close () {
    wx.closeSocket();
  }

  onopen () {}
  onerror (error) {}
  onclose () {}
  onmessage (event) {}
}

그리고 위의 _getWebSocketImplementation 함수에서 WxSocket 대상을 직접 되돌려주면 된다.

좋은 웹페이지 즐겨찾기