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"
}
}