[위 챗 애플 릿]API 네트워크(4)WebSocket

웹 소켓 연결 을 만 들 고 사용 합 니 다.위 챗 애플 릿 은 웹 소켓 연결 만 있 을 수 있 습 니 다.웹 소켓 연결 이 존재 하면 이 연결 을 닫 고 웹 소켓 연결 을 다시 엽 니 다.Socket 은 실시 간 통신 에 사용 할 수 있 으 며,전단 은 socket 을 통 해 서버 가 푸 시 하 는 메 시 지 를 받 을 수 있 습 니 다.
1.wx.connectSocket(OBJECT)을 사용 하여 연결 합 니 다.OBJECT 의 매개 변 수 는 다음 과 같 습 니 다↓ 
매개 변수
유형
필수
설명 하 다.
최저 버 전
url
String
예.
개발 자 서버 인터페이스 주 소 는 ws 프로 토 콜 이 어야 하 며 도 메 인 이름 은 배경 설정 의 합 법 적 인 도 메 인 이름 이 어야 합 니 다.
 
header
Object
아니.
HTTP 헤더,헤더 에 Refer 를 설정 할 수 없습니다.
 
method
String
아니.
기본 값 은 GET,유효 값:OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT
 
protocols
StringArray
아니.
하위 프로 토 콜 배열
1.4.0
success
Function
아니.
인터페이스 호출 성공 적 인 리 셋 함수
 
fail
Function
아니.
인터페이스 호출 실패 한 리 셋 함수
 
complete
Function
아니.
인터페이스 호출 이 끝 난 리 셋 함수(호출 성공,실패 모두 실행)
2.웹 소켓 의 감청 사건
(1)wx.onSocketOpen(CALLBACK)을 사용 하면 WebSocket 연결 오픈 이 벤트 를 감청 할 수 있 습 니 다.
(2)wx.onSocketError(CALLBACK)를 사용 하면 WebSocket 오 류 를 감청 할 수 있 습 니 다.
(3)js 파일 에서 connect Socket 을 호출 합 니 다.url 은 존재 하지 않 는,success 의 반전 도,fail 의 반전 도 없습니다.console 는 connect 만 출력 했 습 니 다.
connect: function () {
    console.log("connect...")
    wx.connectSocket({
      url: 'xxx.xxx.xxx.xxx:8080/wxapp/test.php',
      success: function (res) {
        console.log("success")
       },
      fail: function (res) { 
        console.log("fail")
      },
      complete: function (res) { 
        console.log(res)
      },
    })
  }

3.WebSocket 연결 을 통 해 데 이 터 를 보 내 고 wx.sendSocketmessage(OBJECT)를 사용 하여 완성 하지만 wx.connect Socket 을 먼저 진행 하고 감청 이 시 작 된 wx.onSocket Open 리 셋 을 한 후에 야 보 낼 수 있 습 니 다.(onSocketOpen 의 리 셋 을 완료 할 수 없 기 때문에 이 API 도 프 리 젠 테 이 션 을 할 수 없습니다.)
(1)wx.sendscketmessage 의 매개 변수 설명 을 첨부 합 니 다.
매개 변수
유형
필수
설명 하 다.
data
String/ArrayBuffer
예.
보 낼 내용
success
Function
아니.
인터페이스 호출 성공 적 인 리 셋 함수
fail
Function
아니.
인터페이스 호출 실패 한 리 셋 함수
complete
Function
아니.
인터페이스 호출 이 끝 난 리 셋 함수(호출 성공,실패 모두 실행)
(2)js 의 예시 코드
var socketOpen = false//     socket    ,   false
var socketMsgQueue = []//      socket     
wx.connectSocket({
  url: 'test.php'//  ,        url
})

wx.onSocketOpen(function(res) {
  socketOpen = true//   open ,      true
  for (var i = 0; i < socketMsgQueue.length; i++){
     sendSocketMessage(socketMsgQueue[i])//      
  }
  socketMsgQueue = []//        
})

function sendSocketMessage(msg) {
  if (socketOpen) {/*  open       ,          */
    wx.sendSocketMessage({
      data:msg
    })
  } else {
     socketMsgQueue.push(msg)
  }
}

4.메 시 지 를 보 내 는 것 과 대응 하여 이 부분 은 서버 로부터 받 은 메 시 지 를 기록 하고 wx.onSocketmessage(CALLBACK)를 사용 합 니 다.
CALLBACK 반환 매개 변 수 는 다음 과 같 음↓
매개 변수
유형
설명 하 다.
data
String/ArrayBuffer
서버 반환 메시지
예제 코드
wx.connectSocket({
  url: 'test.php'
})

wx.onSocketMessage(function(res) {
  console.log('       :' + res.data)
})

5.마지막 으로 socket 이 닫 히 고 wx.closeSocket(OBJECT)을 사용 합 니 다.매개 변수 목록 은 다음 과 같 습 니 다↓
매개 변수
유형
필수
설명 하 다.
최저 버 전
code
Number
아니.
연결 이 꺼 진 이 유 를 나타 내 는 숫자 값이 인자 가 지정 되 지 않 았 다 면 기본 값 은 1000 입 니 다.(정상 연결 이 닫 혔 음 을 표시 합 니 다)
1.4.0
reason
String
아니.
연결 이 닫 힌 이 유 를 표시 하 는 읽 을 수 있 는 문자열이 문자열 은 123 바이트 이상 의 UTF-8 텍스트 여야 합 니 다(문자 가 아 닙 니 다)
1.4.0
success
Function
아니.
인터페이스 호출 성공 적 인 리 셋 함수
 
fail
Function
아니.
인터페이스 호출 실패 한 리 셋 함수
 
complete
Function
아니.
인터페이스 호출 이 끝 난 리 셋 함수(호출 성공,실패 모두 실행)
(1)wx.onSocketClose(CALLBACK)를 사용 하여 WebSocket 을 감청 하여 닫 습 니 다.
wx.connectSocket({
  url: 'test.php'
})

//         ,
//   wx.connectSocket      wx.onSocketOpen,     wx.closeSocket,         WebSocket    。
//    WebSocket        wx.closeSocket     。
wx.onSocketOpen(function() {
  wx.closeSocket()
})

wx.onSocketClose(function(res) {
  console.log('WebSocket    !')
})

좋은 웹페이지 즐겨찾기