Uso inicial e básico do WebSocket

Por que usar WebSocket?

Por que ainda usamos o WebSocket depois de termos solicitações http?

O HTTP só pode ser iniciado em uma direção, só pode ser iniciado pelo cliente e o servidor responde passivamente. O servidor não pode enviar mensagens ativamente para o cliente. Se você deseja implementar uma função de mensagens instantâneas semelhante a uma sala de bate-papo, você precisa usar a votação de mensagens. A votação é ineficiente e consome mais recursos. (Toda vez que uma conexão http é estabelecida, um handshake de três vias é executado e cada solicitação precisa conter um cabeçalho de solicitação.) Para resolver esse problema, os desenvolvedores inventaram o webSocket

1. O que é WebSocket?

WebSocket é um protocolo proposto pela especificação HTML5.

Sua maior característica é que o servidor pode enviar informações ativamente para o cliente, e o cliente também pode enviar informações ativamente para o servidor.É um diálogo real de duas vias e pertence a um tipo de tecnologia de envio de servidor.

2. Uso de WebSocket

1. Criação de links

wx.connectSocket({
  url: 'wss://example.qq.com',
  header:{
    'content-type': 'application/json'
  },
  protocols: ['protocol1']
})

Crie uma conexão WebSocket.

 

 

2. Ligar retorno de chamada

wx.onSocketOpen(res=>{
    conlose.log(res)
})

 Responsável por ouvir os eventos abertos da conexão WebSocket.

3. Envie informações

let socketOpen = false
let socketMsgQueue = []
wx.connectSocket({
  url: 'test.php'
})

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

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

Envie dados por uma conexão WebSocket. É necessário wx.connectSocket primeiro e enviar após o retorno de chamada wx.onSocketOpen. 

4. Fechar link

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 已关闭!')
})

 5. Desligue o monitoramento de links

wx.onSocketClose(res=>{
    conlose.log(res)
})
//参数
//code	number	一个数字值表示关闭连接的状态号,表示连接被关闭的原因。
//reason	string	一个可读的字符串,表示连接被关闭的原因。

おすすめ

転載: blog.csdn.net/weixin_53583255/article/details/127504361