Basic Connection

const { io } = require('socket.io-client');

const socket = io('wss://api.byul.ai/news-v2', {
  auth: { apiKey: process.env.BYUL_API_KEY }
});

socket.on('connect', () => {
  console.log('Connected to Byul AI');
  
  socket.emit('news:subscribe', {
    minImportance: 7,
    startDate: '2024-01-01T00:00:00.000Z'
  });
});

socket.on('news:data', (response) => {
  const { data } = response;
  const { news } = data;
  
  news.forEach(article => {
    console.log(`${article.title} (${article.importanceScore}/10)`);
  });
});

With Express Server

const express = require('express');
const { io } = require('socket.io-client');

const app = express();
const byulSocket = io('wss://api.byul.ai/news-v2', {
  auth: { apiKey: process.env.BYUL_API_KEY }
});

// Store latest news
let latestNews = [];

byulSocket.on('connect', () => {
  byulSocket.emit('news:subscribe', { minImportance: 6, startDate: '2024-01-01T00:00:00.000Z' });
});

byulSocket.on('news:data', (response) => {
  const { data } = response;
  const { news } = data;
  latestNews = [...news, ...latestNews].slice(0, 50);
});

// API endpoint
app.get('/api/news', (req, res) => {
  res.json(latestNews);
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

Error Handling

const { io } = require('socket.io-client');

const socket = io('wss://api.byul.ai/news-v2', {
  reconnection: true,
  reconnectionAttempts: 5
});

socket.on('connect', () => {
  console.log('Connected');
  socket.emit('news:subscribe', { minImportance: 7, startDate: '2024-01-01T00:00:00.000Z' });
});

socket.on('disconnect', () => {
  console.log('Disconnected');
});

socket.on('connect_error', (error) => {
  console.error('Connection failed:', error.message);
});

socket.on('news:error', (error) => {
  console.error('News error:', error.message);
});

socket.on('news:data', (articles) => {
  console.log(`Received ${articles.length} articles`);
});

Environment Setup

package.json
{
  "name": "byul-websocket-client",
  "version": "1.0.0",
  "dependencies": {
    "socket.io-client": "^4.7.0",
    "express": "^4.18.0"
  }
}
Install and run
npm install
BYUL_API_KEY=byul_api_key node app.js

Portfolio Tracking

const { io } = require('socket.io-client');

const socket = io('wss://api.byul.ai/news-v2', {
  auth: { apiKey: process.env.BYUL_API_KEY }
});

const portfolio = ['AAPL', 'GOOGL', 'MSFT'];

socket.on('connect', () => {
  // Subscribe to portfolio news
  portfolio.forEach(symbol => {
    socket.emit('news:subscribe', {
      symbol,
      minImportance: 6,
      startDate: '2024-01-01T00:00:00.000Z',
      endDate: '2024-01-31T23:59:59.999Z'
    });
  });
});

socket.on('news:data', (articles) => {
  articles.forEach(article => {
    if (portfolio.includes(article.symbol)) {
      console.log(`${article.symbol}: ${article.title}`);
      console.log(`   Importance: ${article.importance}/10`);
      console.log(`   URL: ${article.url}\n`);
    }
  });
});