Node.js - Usando WebSockets

WebSockets são uma ferramenta para comunicação birecional entre um cliente de navegador e um servidor. 특히 OS WebSockets는 클라이언트를 부러워하는 서비스 제공자를 허용합니다. Isso é diferente de sua solicitação HTTP padrão usando fetch() ou Axios porque o servidor não pode se comunicar com o cliente a menos que o cliente enveie uma solicitação primeiro.

WebSockets는 더 유연하게 사용할 수 있고 더 쉽게 구현할 수 있습니다. OS WebSockets는 절대적으로 필요한 경우에만 필요에 따라 필요에 따라 필요에 따라 필요에 따라 전환할 수 있습니다. Neste artigo, você aprenderá como construir um aplicativo simples de bate-papo em tempo real usando WebSockets.

O 서버 WebSocket



Opacote ws npm는 Node.js의 WebSocket에서 "확실한"라이브러리입니다. 사용 가능한 포트Socket.IO, Socket.IO는 고급 WebSockets의 추상화, 구현protocolo WebSocket에 사용됩니다.

Abaixo está um example básico de um servidor WebSocket que rastreia todos os sockets abertos e envia mensagens de entrada para todos os sockets abertos. Você pode pensar nisso como um simples servidor de bate-papo: quando uma pessoa envia uma mensagem, o servidor a transmitter para todos que estão ouvindo.

const WebSocket = require('ws');
const server = new WebSocket.Server({
  port: 8080
});

let sockets = [];
server.on('connection', function(socket) {
  // Adicionamos cada nova conexão/socket ao array `sockets`
  sockets.push(socket);

  // Quando você receber uma mensagem, enviamos ela para todos os sockets
  socket.on('message', function(msg) {
    sockets.forEach(s => s.send(msg));
  });

  // Quando a conexão de um socket é fechada/disconectada, removemos o socket do array
  socket.on('close', function() {
    sockets = sockets.filter(s => s !== socket);
  });
});


클라이언트 WebSocket 및 Node.js



WebSocket은 구성 요소를 연결하고 클라이언트와 서버를 연결합니다. No exemplo acima, você criou um servidor. 클라이언트는 WebSocket에 연결하기 위해 먼저 요청하고 WebSocket에 연결하기 위해 요청하고 응답하도록 서비스를 제공합니다.

Node.js를 사용하여 WebSocket 클라이언트를 호출할 수 있습니다ws. Logitech WebSocket의 테스터는 WebSocket을 사용하여 백엔드 서비스를 제공할 수 있습니다. Abaixo está um exemplo de um cliente WebSocket que se comunica com o servidor acima.

let clients = [
  new WebSocket('ws://localhost:8080'),
  new WebSocket('ws://localhost:8080')
];

clients.map(client => {
  client.on('message', msg => console.log(msg));
});

// Esperamos o cliente conectar com o servidor usando async/await
await new Promise(resolve => clients[0].once('open', resolve));

// Imprimi "Hello!" duas vezes, um para cada cliente
clients[0].send('Hello!');


Cliente WebSocket no navegador



A maioria dos navegadores modernos oferece suporte para WebSockets por padrão . 그러나 Internet Explorer 9 또는 Opera Mini를 지원하는 클래스WebSocket 또는 탐색 도구ws 또는 번역 도구를 사용할 수 없습니다. Abaixo está uma imagemda seção de WebSockets do caniuse.com .



E aqui está um exemplo de uma página de chat que se conecta ao servidor do início desse artigo:

<html>
  <head>
    <script type="text/javascript">
      const ws = new WebSocket('ws://localhost:8080');

      // A classe `WebSocket` nos navegadores tem uma sintaxe um pouco diferente de `ws`
      // Ao invés da sintax de EventEmmiter `on('open')`, você adiciona um callback
      // a propriedade `onopen`.
      ws.onopen = function() {
        document.querySelector('#send').disabled = false;

        document.querySelector('#send').addEventListener('click', function() {
          ws.send(document.querySelector('#message').value);
        });
      };

      ws.onmessage = function(msg) {
        document.querySelector('#messages').innerHTML += `<div>${msg.data}</div>`;
      };
    </script>
  </head>
  <body>
    <h1>Chat</h1>
    <div>
      <input id="message" placeholder="Message">
      <button id="send" disabled="true">Send</button>
    </div>
    <div id="messages">
    </div>
  </body>
</html>


WebSockets no navegador têm uma sintaxe ligeiramente diferente para aguardar a conexão e receber mensagens do servidor 에 유의하십시오. Ao invés de on('message', messageHandler) , você deve escrever onmessage = messageHandler .

크레딧



  • WebSockets in Node.js , escrito originalmente por .
  • 좋은 웹페이지 즐겨찾기