UNPKG

node-express-socket

Version:

A structure to add socket manager in express routes

224 lines (167 loc) 4.95 kB
# 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(); socket(app, server); 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(router); ``` If you want to use a general route for 'Not found', it should be after socket use command. <pre> const express = require('express'); const socket = require("node-express-socket"); const router = express.Router(); const app = express(); socket(app, server); 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(router); <b>app.use((req, res, next) => { res.status(404).send("404 - not found"); });</b> </pre> Get user socket id <pre> const express = require('express'); const socket = require("node-express-socket"); const router = express.Router(); const app = express(); socket(app, server); router.socket("/test1/:fname/:lname", (req, res) => { <b>console.log(req.socketId);</b> 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(router); app.use((req, res, next) => { res.status(404).send("404 - not found"); }); </pre> Send message to specific user <pre> const express = require('express'); const socket = require("node-express-socket"); const router = express.Router(); const app = express(); let users = [/*user ids*/]; socket(app, server); router.socket("/test1/:fname/:lname", (req, res) => { <b>users.push(req.socketId);</b> <b>res.sendTo("Hi", ...users);</b> 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(router); app.use((req, res, next) => { res.status(404).send("404 - not found"); }); </pre> Send broadcast message <pre> const express = require('express'); const socket = require("node-express-socket"); const router = express.Router(); const app = express(); socket(app, server); router.socket("/test1/:fname/:lname", (req, res) => { <b>res.broadcast("Hi");</b> 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(router); app.use((req, res, next) => { res.status(404).send("404 - not found"); }); </pre> Response socket message from out of socket methods <pre> const express = require('express'); const socket = require("node-express-socket"); const router = express.Router(); const app = express(); socket(app, server); 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.broadcastSocket("Hi"); res.sendSocketTo("Hi", "/*user1 id*/", "/*user2 id*/", ...); 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(router); app.use((req, res, next) => { res.status(404).send("404 - not found"); }); </pre> ### 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" } } ```