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.
npm install node-express-socket
Important: It only can use by Router
and you can't use by express()
method like as express().socket
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"); });
// 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);
});
{
m: "SOCKET",
q: {
qp1: "v1"
},
p: {
fname: "joe",
lname: "gandomi"
},
b: {
var1: "value1",
var2: "value2"
}
}