node-express-socket

1.1.4 • Public • Published

Express.js socket handler

This package is an easy way to implement and manage socket connections and also make a simple way to migrate from REST API to Socket API.

Installation instruction:

npm install node-express-socket

Use:

Important: It only can use by Router and you can't use by express() method like as express().socket

Server side:

const express = require('express');
const socket = require("node-express-socket");
const router = express.Router();
const app = express();

router.socket("/test1/:fname/:lname", (req, res) => {
  res.send({m:req.method, q:req.query, b:req.body, p:req.params});
});

router.get("/test1/:fname/:lname", (req, res) => {
  res.send({m:req.method, q:req.query, b:req.body, p:req.params});
});

const server = app.listen(8000, () => {
  console.log(`Server running at port:8000`);
});

app.use(socket(app, server));
app.use(router);

If you want to use a general route for 'Not found', it should be after socket use command.

const express = require('express');
const socket = require("node-express-socket");
const router = express.Router();
const app = express();

router.socket("/test1/:fname/:lname", (req, res) => {
  res.send({m:req.method, q:req.query, b:req.body, p:req.params});
});

router.get("/test1/:fname/:lname", (req, res) => {
  res.send({m:req.method, q:req.query, b:req.body, p:req.params});
});

const server = app.listen(8000, () => {
  console.log(`Server running at port:8000`);
});

app.use(socket(app, server));
app.use(router);

app.use((req, res, next) => {
  res.status(404).send("404 - not found");
});

Get user socket id

const express = require('express');
const socket = require("node-express-socket");
const router = express.Router();
const app = express();

router.socket("/test1/:fname/:lname", (req, res) => {
  console.log(req.socketId);
  res.send({m:req.method, q:req.query, b:req.body, p:req.params});
});

router.get("/test1/:fname/:lname", (req, res) => {
  res.send({m:req.method, q:req.query, b:req.body, p:req.params});
});

const server = app.listen(8000, () => {
  console.log(`Server running at port:8000`);
});

app.use(socket(app, server));
app.use(router);

app.use((req, res, next) => {
  res.status(404).send("404 - not found");
});

Send message to specific user

const express = require('express');
const socket = require("node-express-socket");
const router = express.Router();
const app = express();
let users = [/*user ids*/];

router.socket("/test1/:fname/:lname", (req, res) => {
  users.push(req.socketId);
  res.send.to(...users)("Hi");
  res.send({m:req.method, q:req.query, b:req.body, p:req.params});
});

router.get("/test1/:fname/:lname", (req, res) => {
  res.send({m:req.method, q:req.query, b:req.body, p:req.params});
});

const server = app.listen(8000, () => {
  console.log(`Server running at port:8000`);
});

app.use(socket(app, server));
app.use(router);

app.use((req, res, next) => {
  res.status(404).send("404 - not found");
});

Send broadcast message

const express = require('express');
const socket = require("node-express-socket");
const router = express.Router();
const app = express();

router.socket("/test1/:fname/:lname", (req, res) => {
  res.send.broadcast("Hi");
  res.send({m:req.method, q:req.query, b:req.body, p:req.params});
});

router.get("/test1/:fname/:lname", (req, res) => {
  res.send({m:req.method, q:req.query, b:req.body, p:req.params});
});

const server = app.listen(8000, () => {
  console.log(`Server running at port:8000`);
});

app.use(socket(app, server));
app.use(router);

app.use((req, res, next) => {
  res.status(404).send("404 - not found");
});

Response socket message from out of socket methods

const express = require('express');
const socket = require("node-express-socket");
const router = express.Router();
const app = express();

router.socket("/test1/:fname/:lname", (req, res) => {
  res.send({m:req.method, q:req.query, b:req.body, p:req.params});
});

router.get("/test1/:fname/:lname", (req, res) => {
  const sckRes = express().socketResponse // Use a variable to check if any socket connection has exists and call it
  if (!!sckRes) sckRes("/test1/*/*", "Hi"); // For broadcast messaging
  if (!!sckRes) sckRes("/test1/*/*", "Hi", "/*user1 id*/", "/*user2 id*/", ...); // For sending message to specific users
  res.send({m:req.method, q:req.query, b:req.body, p:req.params});
});

const server = app.listen(8000, () => {
  console.log(`Server running at port:8000`);
});

app.use(socket(app, server));
app.use(router);

app.use((req, res, next) => {
  res.status(404).send("404 - not found");
});

Client side:

// 1) Create and connect socket object
const socket = io();

// 2) Send request using WebSocket
socket.emit('/test1/joe/gandomi?qp1=v1', {
    var1: "value1",
    var2: "value2"
});

// 3) Receive response using WebSocket
socket.on('/test/*/*', data => {
  console.log(data);
});

Client log:

{
    m: "SOCKET",
    q: {
        qp1: "v1"
    },
    p: {
        fname: "joe",
        lname: "gandomi"
    },
    b: {
        var1: "value1",
        var2: "value2"
    }
}

Package Sidebar

Install

npm i node-express-socket

Weekly Downloads

2

Version

1.1.4

License

MIT

Unpacked Size

12.1 kB

Total Files

8

Last publish

Collaborators

  • samir86