# ws

***

**1. WebSockets Echo Server**

```js
const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
  ws.on('message', (message) => { ws.send(message); });
});
```

**2. WebSockets Chat Server**

```js
const WebSocket = require('ws');
const clients = [];

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => { clients.push(ws); });

wss.on('message', (message, client) => {
  clients.forEach((c) => { if (c !== client) c.send(message); });
});
```

**3. WebSockets Real-Time Data Streaming**

```js
const WebSocket = require('ws');
const data = ['A', 'B', 'C'];

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => { setInterval(() => { ws.send(data[Math.floor(Math.random() * data.length)]); }, 1000); });
```

**4. WebSockets User Presence**

```js
const WebSocket = require('ws');
const clients = [];

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => { clients.push(ws); });

wss.on('close', (ws) => {
  clients.splice(clients.indexOf(ws), 1);
  clients.forEach((c) => { c.send(JSON.stringify({ type: 'user_left', user: ws.id })); });
});

wss.on('message', (message, client) => {
  const data = JSON.parse(message);
  switch (data.type) {
    case 'user_enter': {
      clients.forEach((c) => { c.send(JSON.stringify({ type: 'user_enter', user: client.id })); });
      break;
    }
    case 'message': {
      clients.forEach((c) => { c.send(JSON.stringify({ type: 'message', user: client.id, text: data.text })); });
      break;
    }
    default: { break; }
  }
});
```

**5. WebSockets File Transfer**

```js
const WebSocket = require('ws');
const fs = require('fs');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
  ws.on('message', (message) => {
    const data = JSON.parse(message);
    if (data.type === 'file') {
      const buffer = Buffer.from(data.base64, 'base64');
      fs.writeFile(data.name, buffer, () => { ws.send('File received'); });
    }
  });
});
```

**6. WebSockets Audio/Video Streaming**

```js
const WebSocket = require('ws');
const ffmpeg = require('fluent-ffmpeg');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
  ws.on('message', (message) => {
    const data = JSON.parse(message);
    if (data.type === 'video') {
      ffmpeg().input(data.source).audioCodec('copy').videoCodec('copy').on('error', (err) => { ws.send(err.message); }).on('data', (chunk) => { ws.send(chunk); }).on('end', () => { ws.send('Video stream ended'); });
    }
  });
});
```

**7. WebSockets Game Server**

```js
const WebSocket = require('ws');
const clients = [];

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => { clients.push(ws); });

wss.on('message', (message, client) => {
  const data = JSON.parse(message);
  switch (data.type) {
    case 'move': {
      clients.forEach((c) => { if (c !== client) c.send(JSON.stringify({ type: 'move', user: client.id, position: data.position })); });
      break;
    }
    case 'attack': {
      clients.forEach((c) => { if (c !== client) c.send(JSON.stringify({ type: 'attack', user: client.id, target: data.target })); });
      break;
    }
    default: { break; }
  }
});
```

**8. WebSockets Remote Control**

```js
const WebSocket = require('ws');
const robot = require('robotjs');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
  ws.on('message', (message) => {
    const data = JSON.parse(message);
    switch (data.type) {
      case 'mouse_move': { robot.moveMouseSmooth(data.x, data.y); break; }
      case 'mouse_click': { robot.mouseClick(); break; }
      case 'keyboard_press': { robot.keyTap(data.key); break; }
      default: { break; }
    }
  });
});
```

**9. WebSockets IoT Device Control**

```js
const WebSocket = require('ws');
const iot = require('aws-iot-device-sdk');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
  const client = iot.device({ endpoint: '...', clientId: '...', privateKey: '...', certificatePem: '...' });
  client.on('connect', () => { ws.send('Connected to IoT device'); });
  client.on('message', (topic, payload) => { ws.send(`Message from IoT device: ${payload.toString()}`); });

  ws.on('message', (message) => {
    const data = JSON.parse(message);
    if (data.type === 'control') { client.publish('control', data.value); }
  });
});
```

**10. WebSockets Data Synchronization**

```js
const WebSocket = require('ws');
const db = require('nedb');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
  const data = new db('data.db');
  data.find({}, (err, docs) => { ws.send(JSON.stringify({ type: 'sync', data: docs })); });

  ws.on('message', (message) => {
    const data = JSON.parse(message);
    if (data.type === 'update') { data.insert(data.value, (err, doc) => { ws.send(JSON.stringify({ type: 'updated', data: doc })); }); }
  });
});
```

**11. WebSockets Real-Time Collaboration**

```js
const WebSocket = require('ws');
const whiteboard = require('whiteboard');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
  const board = whiteboard();
  ws.on('message', (message) => {
    const data = JSON.parse(message);
    switch (data.type) {
      case 'draw': { board.draw(data.x, data.y, data.color); break; }
      case 'erase': { board.erase(data.x, data.y); break; }
      default: { break; }
    }
    wss.clients.forEach((c) => { if (c !== ws) c.send(JSON.stringify({ type: 'update', data: board.serialize() })); });
  });
});
```

**12. WebSockets Social Network**

```js
const WebSocket = require('ws');
const db = require('nedb');

const wss = new WebSocket.Server({ port: 8080 });
const users = new db('users.db');

wss.on('connection', (ws) => {
  ws.on('message', (message) => {
    const data = JSON.parse(message);
    switch (data.type) {
      case 'login': {
        users.findOne({ username: data.username, password: data.password }, (err, user) => {
          if (user) { ws.send(JSON.stringify({ type: 'login_success' })); }
          else { ws.send(JSON.stringify({ type: 'login_failed' })); }
        });
        break;
      }
      case 'register': {
        users.insert({ username: data.username, password: data.password }, (err, doc) => { ws.send(JSON.stringify({ type: 'registered' })); });
        break;
      }
      case 'message': {
        wss.clients.forEach((c) => { if (c !== ws) c.send(JSON.stringify({ type: 'message', user: ws.id, text: data.text })); });
        break;
      }
      default: { break; }
    }
  });
});
```

**13. WebSockets E-commerce**

```js
const WebSocket = require('ws');
const db = require('nedb');

const wss = new WebSocket.Server({ port: 8080 });
const carts = new db('carts.db');

wss.on('connection', (ws) => {

```
