Apidog

Plataforma Colaborativa All-in-one para Desenvolvimento de API

Design de API

Documentação de API

Depuração de API

Mock de API

Testes Automatizados de API

Como implementar WebSocket em C (Guia para Iniciantes)

Explorando os conceitos básicos da implementação de WebSocket em C e fornecendo exemplos práticos para guiá-lo sobre como enviar WebSocket com Apidog de maneira fácil.

Miguel Oliveira

Miguel Oliveira

Updated on novembro 29, 2024

WebSocket é um poderoso protocolo de comunicação usado para troca de dados bidirecional em tempo real entre um cliente e um servidor. Sua capacidade de estabelecer e manter uma conexão de longa duração o torna ideal para aplicações que requerem atualizações de dados instantâneas. Se você está interessado em implementar WebSocket em linguagem C, este artigo fornecerá um guia conciso para começar.

Instalando libwebsockets

Atualmente, Tornado é uma biblioteca popular para implementar WebSocket em Python. No entanto, libwebsockets é uma biblioteca WebSocket flexível e fácil de usar, multiplataforma, escrita em linguagem C.

libwebsockets é uma biblioteca WebSocket multiplataforma escrita em C, que permite a criação de servidores e clientes relacionados ao protocolo WebSocket. É uma biblioteca flexível e amigável que permite o desenvolvimento rápido de aplicações WebSocket de alto desempenho. Graças ao seu design simples e leve, é particularmente adequada para a construção de aplicações em sistemas embarcados ou aplicações de servidor de alta carga que manejam um grande número de conexões.

C

Você pode instalar libwebsockets desta forma:

git clone https://github.com/warmcat/libwebsockets.git
cd libwebsockets
mkdir build
cd build
cmake ..
make && sudo make install
pkg-config --modversion libwebsockets

Adicionando libwebsockets.h

#include <libwebsockets.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

Escrevendo código lógico

#include <libwebsockets.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

// Estrutura para armazenar dados de cada sessão WebSocket
struct per_session_data {
};

// Função de callback para mensagens do servidor WebSocket
int callback(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len) {
    switch (reason) {
        case LWS_CALLBACK_ESTABLISHED: // Trata o evento de nova conexão
            // Adiciona um timer para enviar um timestamp a cada segundo
            lws_callback_on_writable(wsi);
            break;
        case LWS_CALLBACK_SERVER_WRITEABLE: // Trata o evento de enviar dados
            // Envia o timestamp
            time_t t = time(NULL);
            char timestamp[20];
            sprintf(timestamp, "%ld", t);
            lws_write(wsi, timestamp, strlen(timestamp), LWS_WRITE_TEXT);
            lws_callback_on_writable(wsi);
            break;
        // Outros eventos omitidos
    }
    return 0;
}

int main(int argc, char **argv) {
    // Cria o protocolo WebSocket
    static struct lws_protocols protocols[] = {
        {
            "demo-protocol", // Nome do protocolo, deve corresponder ao protocolo WebSocket no código do frontend
            callback, // Ponteiro da função de callback
            sizeof(struct per_session_data), // Tamanho dos dados para cada sessão (conexão)
            0, // Sem parâmetros adicionais do protocolo
            NULL, NULL, NULL
        },
        { NULL, NULL, 0, 0 } // A lista de protocolos termina com NULL
    };

    // Cria o contexto WebSocket
    struct lws_context_creation_info info = {
        .port = 3001, // Número da porta de escuta
        .protocols = protocols // Lista de protocolos
    };
    struct lws_context *context = lws_create_context(&info);

    // Verifica se a criação do contexto WebSocket foi bem-sucedida
    if (!context) {
        printf("Falha ao criar o contexto WebSocket.\n");
        return -1;
    }

    // Entra no loop e espera por conexões WebSocket
    while (1) {
        lws_service(context, 50);
    }

    // Limpa e fecha o contexto WebSocket
    lws_context_destroy(context);

    return 0;
}

A Página do Front-end Conecta WebSocket

Criando página

Você precisa criar um index.html e preencher com o código abaixo:

<!DOCTYPE html>
<html lang="pt">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Documento</title>
  <script>
    window.onload = () => {
        if ('WebSocket' in window) {
            // Cria uma conexão WebSocket
            let ws = new WebSocket('ws://127.0.0.1:3001/websocket');
            // Envia uma mensagem quando a conexão for estabelecida com sucesso e o servidor puder começar a enviar dados
            ws.onopen = () => {
                console.log('websocket sucesso---');
                ws.send('sucesso');
            }
            ws.onmessage = (message) => {
                let data = message.data;
                console.log('recebido mensagem websocket---', data);
            }
            ws.onerror = () => {
                console.error('falha no websocket');
            }
        } else {
            console.error('não suporta websocket');
        };
    };
</script>

</head>
<body>
  
</body>
</html>

Executando a Página

Clique com o botão direito no index.html e abra este arquivo:

Ver os Resultados

Você pode ver que o backend recebe a mensagem "aberto sucesso" do frontend primeiro e a construção da conexão é bem-sucedida.

Então, depois que a conexão foi estabelecida, o backend começou a enviar informações para o frontend.

Como Enviar WebSocket com Apidog

Agora que cobrimos a implementação do WebSocket em linguagem C, vamos explorar como enviar solicitações WebSocket usando Apidog. Enquanto a seção anterior se concentrou nos fundamentos e técnicas de programação WebSocket em C, o Apidog oferece uma maneira conveniente de interagir com APIs WebSocket por meio de sua interface amigável.

Passo 1. Criando Solicitação WebSocket

  • Clique no botão "+", e escolha "Nova API WebSocket". Em seguida, especifique a URL WebSocket, geralmente começando com ws:// ou wss://, na configuração do endpoint.
Criar Solicitação WebSocket

Passo 2. Enviar uma Mensagem

Na Mensagem você pode preencher a mensagem a ser entregue ao servidor, depois de enviá-la, o servidor receberá a mensagem que você enviar.

Enviar uma Mensagem

Nota: Certifique-se de que o servidor WebSocket está em execução e acessível para uma comunicação bem-sucedida com o Apidog.

Passo 3. Salvando a Solicitação

Quando você terminar de escrever, pode clicar em Salvar para salvar a solicitação, que será reutilizada rapidamente na próxima vez.

Salvar Solicitação

Passo 4. Conectando-se a um Servidor WebSocket

Primeiro, clique no botão Conectar para fazer uma conexão WebSocket.

Conectando-se a um serviço

Após uma conexão bem-sucedida, o Apidog mostrará uma mensagem de sucesso. O lado do servidor também responderá porque a conexão foi bem-sucedida.

uma conexão bem-sucedida

Passo 5. Enviando Solicitação WebSocket

Então podemos nos comunicar com o servidor via WebSocket. Você pode usar o Apidog para enviar Mensagem e Parâmetros ao servidor clicando no botão Enviar.

img

Você pode clicar no botão desconectar se não quiser mais estar conectado.

img

Nota:

O Apidog tem tanto uma parte web quanto uma parte cliente. Se você estiver usando a parte web e quiser depurar serviços locais, precisará instalar o plugin do Google para o Apidog.

Baixe aqui: Extensão do Navegador Apidog

Conclusão

Em conclusão, implementar WebSocket em linguagem C envolve instalar a biblioteca "libwebsockets", incluindo o arquivo de cabeçalho necessário e escrevendo o código lógico. Além disso, você pode utilizar ferramentas como Apidog para enviar solicitações WebSocket e testar a funcionalidade do seu WebSocket.

Como acessar a API do Claude 3.7 Sonnet e testar usando ApidogTutoriais

Como acessar a API do Claude 3.7 Sonnet e testar usando Apidog

Se você está empolgado com o último lançamento da Anthropic, Claude 3.7 Sonnet, e quer explorar suas capacidades através da API enquanto o testa com o Apidog, você está no lugar certo. 💡Antes de começarmos, deixe-me fazer uma rápida observação: baixe o Apidog gratuitamente hoje e otimize seu processo de teste de API, especialmente para explorar os poderosos recursos do Claude 3.7 Sonnet—perfeito para desenvolvedores que desejam testar modelos de IA de ponta como este!botão Vamos começar com a

@apidog

fevereiro 25, 2025

Como passar o x-API-key no cabeçalho?Tutoriais

Como passar o x-API-key no cabeçalho?

Desvende os segredos da segurança eficaz de APIs, dominando como passar x-API-key nos cabeçalhos. Este guia abrangente revelará a importância desse processo e como ferramentas como o Apidog podem facilitar seus esforços. Continue lendo para garantir que suas interações com a API permaneçam seguras!

Miguel Oliveira

agosto 12, 2024

Como corrigir o erro HTTP 405 Método Não Permitido no PostmanTutoriais

Como corrigir o erro HTTP 405 Método Não Permitido no Postman

O código de erro HTTP 405 ocorre quando você tenta acessar um servidor usando uma chave de API ou token de acesso inválido ou ausente. Neste artigo, veremos mais sobre o erro 405 e como corrigi-lo.

Miguel Oliveira

agosto 11, 2024