WEBSOCKETauthenticate

Conectar e autenticar

As telas do sistema se atualizam sozinhas por Socket.IO, no mesmo endereço da API. Conectado e autenticado, o seu sistema recebe os mesmos avisos: paciente cadastrado, exame agendado, laudo liberado.

O que enviar

NomeTipoObrig.Descrição
token
stringSimO access_token do login.

Do zero ao primeiro aviso

1

Conecte

No endereço da API, caminho padrão /socket.io/. O servidor responde com o evento connected.

import { io } from "socket.io-client";

const socket = io("https://api-endosystem.imagemais.com.br", { transports: ["websocket"] });
2

Autentique com o token do login

Emita authenticate com o access_token. A resposta é authenticated (deu certo) ou auth_error.

socket.on("connect", () => {
  socket.emit("authenticate", { token: accessToken });
});

socket.on("authenticated", (dados) => console.log("na sala", dados.account_room));
socket.on("auth_error", (erro) => console.error(erro.message));
3

Escute os eventos

Cada evento tem um nome fixo e um objeto com os dados. Os nomes estão nas páginas desta seção.

socket.on("consultation_report_created", ({ report }) => {
  console.log("laudo liberado", report.id, report.patient.name);
});
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

O que chega

{
  "message": "Autenticado com sucesso",
  "account_room": "account:0b7d2e4f-8a91-4c3b-b5e6-2f1a9c8d7e60",
  ...
{
  "message": "Autenticado com sucesso",
  "account_room": "account:0b7d2e4f-8a91-4c3b-b5e6-2f1a9c8d7e60",
  "user": {
    "id": "6a8c0e2b-4d6f-4a8b-9c1e-3f5a7b9d1c3e",
    "name": "Integração Sistema X",
    "email": "integracao@clinica.com.br",
    "role": "operator"
  }
}
{
  "message": "Token é obrigatório"
}
{
  "message": "Token é obrigatório"
}
{
  "message": "Usuário inválido"
}
{
  "message": "Usuário inválido"
}
{
  "message": "Erro na autenticação: Signature has expired"
}
{
  "message": "Erro na autenticação: Signature has expired"
}