1. Install
npm i client-socket-nodejs cng-node-js-utils
2. Create key pair for this client before do anything follow:
const { ClientDeviceInfo } = require("client-socket-nodejs").socket;
let appName = "TEST";
let deviceKey = {
}
let clientDeviceInfo = new ClientDeviceInfo(appName, deviceKey);
clientDeviceInfo.getClientInfo()
.then(deviceInfo => {
console.log('deviceInfo: ', deviceInfo);
console.log('Key pair created:', clientDeviceInfo.getKeyPair())
})
.catch(err => {
console.log('Error for create key: ', err);
});
3. Register user in socket user follow:
const { ClientSocket, ClientDeviceInfo } = require("client-socket-nodejs").socket;
let appName = "TEST";
let deviceKey = {
id: 'public_key',
key: 'private_key',
created_time: 'create_time format ISO yyyy-mm-dd hh:mi:ss'
}
let clientDeviceInfo = new ClientDeviceInfo(appName, deviceKey);
let pass = 'passForUser';
let expired = 365;
let isDebug = true;
let socketLink = {
url: "http://localhost:9225"
, path: "/socket"
, timeout: 10000
}
let loginUser = {
username: 'phoneNumberOrEmail',
user_type: 'emal',
}
let userInfo = {
nickname: "NickName Demo"
, fullname: "The name of this app for description"
, address: "Address for this server"
, phone: "Phone number"
, email: "Email of this user"
, avatar: 'Link of avatar'
, background: 'Link of background'
}
let clientSocket = new ClientSocket(clientDeviceInfo, loginUser, userInfo, pass, expired, isDebug);
clientSocket.init(socketLink.url, socketLink.path, socketLink.timeout)
const { waiting } = require("cng-node-js-utils")
waiting(20000, { hasData: () => clientSocket.getToken() })
.then(msg => {
console.log("***>Current TOKEN connected: ", clientSocket.getToken());
})
4. Login by user for token if token expire
const { ClientSocket, ClientDeviceInfo } = require("client-socket-nodejs").socket;
let appName = "TEST";
let deviceKey = {
id: 'public_key',
key: 'private_key',
created_time: 'create_time format ISO yyyy-mm-dd hh:mi:ss'
}
let clientDeviceInfo = new ClientDeviceInfo(appName, deviceKey);
let pass = 'passForUser';
let expired = 365;
let isDebug = true;
let socketLink = {
url: "http://localhost:9225"
, path: "/socket"
, timeout: 10000
}
let loginUser = {
username: 'phoneNumberOrEmail',
user_type: 'emal',
}
let userInfo;
let clientSocket = new ClientSocket(clientDeviceInfo, loginUser, userInfo, pass, expired, isDebug);
clientSocket.init(socketLink.url, socketLink.path, socketLink.timeout)
const { waiting } = require("cng-node-js-utils")
waiting(20000, { hasData: () => clientSocket.getToken() })
.then(msg => {
console.log("***>Current TOKEN connected: ", clientSocket.getToken());
})
5. Init socket connection with token
const { ClientSocket, ClientDeviceInfo } = require("../socket");
let appName = "TEST";
let deviceKey = {
id: 'public_key',
key: 'private_key',
created_time: 'create_time format ISO yyyy-mm-dd hh:mi:ss'
}
let token = "copy Token in step 3 in here";
let clientDeviceInfo = new ClientDeviceInfo(appName, deviceKey, token);
let clientSocket = new ClientSocket(clientDeviceInfo, loginUser, userInfo, pass, expired, isDebug);
clientSocket.init(socketLink.url, socketLink.path, socketLink.timeout)
const { waiting } = require("cng-node-js-utils")
waiting(20000, { hasData: () => clientSocket.getToken() })
.then(msg => {
console.log("***>Current TOKEN connected: ", clientSocket.getToken());
})
6. Make proxy authentication server socket
npm i client-socket-nodejs
-
6.1 create key pair for this server
-
6.2 register new user (ask admin socket server)
-
6.3 login and get token with expired date
-
6.4 copy keyPair and token follow file config socketVerify
-
6.5 create handler for verify token in ./handler/client-socket/socket-verify.js
or any for secret token and private_key for this server:
const { ClientSocket, ClientDeviceInfo, ClientHandler } = require("client-socket-nodejs");
let appName = "TEST";
let deviceKey = {
id: 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMYLyjaOwTyajv1GMlBVim70bw4DUERzHhqobvN+2As8j7qGTNNl7FoZjCRMeVJcvLSerpCT+RWA695bmLv91RcCAwEAAQ==',
key: 'MIIBOwIBAAJBAMYLyjaOwTyajv1GMlBVim70bw4DUERzHhqobvN+2As8j7qGTNNl7FoZjCRMeVJcvLSerpCT+RWA695bmLv91RcCAwEAAQJAA80yIn33A5zL5dy1Fomt0Jdskk5J+iZji4t0JcRnjT+hsKroIjwVNS9z58MXmwI1u/s3WljkAGTLvOjepMlPYQIhAPDeu1YxUS7QAg0VtaCwm1R6sxs4Fub+pcbvYrOf+s8fAiEA0nxvOfZI8wE0/CoP2j1D5sNKinsImVt52HpyrWvK0wkCIQDKWzSjWtdLLrEqcPyfvP8h39ssmNiUw4ZeNKqFIXfCHQIgfyr03DUDL+XbyDn1Z+o52vLEV1QsBtNwkyyvmj0UxlkCIQCC43kV/Jc6FegQd/IZFE4YnGaqSii+y2/gz2O6xpGnjQ==',
created_time: '2020-09-12 09:02:09'
}
let token = "eyJ1c2VybmFtZSI6IjA5MDM1MDAxMjUiLCJkZXZpY2VfaWQiOjE1LCJpYXQiOjE1OTk4ODM4NDY2OTQsImV4cCI6MTYzMTQxOTg0NjY5NH0=.WlJGaDdDYkhFOWczZXdXdVdvOUsrV2NjV2U5bVBtTlRtKzI2WGw0Vi9leDZzWjkwcmVEOGlsMHNUazlFTXVxTC9DTFk0b3BSWHdtOVJ4V2t2a1ZoUHc9PQ==";
let clientDeviceInfo = new ClientDeviceInfo(appName, deviceKey, token);
let socketLink = {
url: "http://localhost:9225"
, path: "/socket"
, timeout: 10000
}
let byPass = true;
let clientSocket = new ClientSocket(clientDeviceInfo);
clientSocket.init(socketLink.url, socketLink.path, socketLink.timeout)
const clientHandler = new ClientHandler(clientSocket, socketLink.url, socketLink.path, byPass)
module.exports = {
verifyToken: clientHandler.verifyToken,
getResource: clientHandler.getResource
}
- 6.6 in any routes for verify token by socket proxy
const { postHandler } = require("cng-node-js-utils")
const socketVerify = require("../../handlers/client-socket/socket-verify")
7. Javascript package for login form:
npm i client-socket-nodejs@latest
node ./client-socket-nodejs/test/create-key-pair.js
const { ClientInputInterface } = require("client-node-js");
const deviceKey = {
}
const APP_NAME = "WEB-DEMO";
let clientDeviceInfo = new ClientDeviceInfo(APP_NAME, deviceKey);
const socketLink = {
url: "http://localhost:9225"
, path: "/socket"
, timeout: 10000
}
let client = new ClientInputInterface(APP_NAME, deviceKey, socketLink);
const { waiting } = require("cng-node-js-utils");
let myToken =
"yourtoken.yoursign";
client
.loginByToken(myToken)
.then((data) => {
console.log("data", data);
})
.catch((err) => {
console.log("err", err);
});
Login IN WEB default index.html
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="./www.client.socket.login.js"></script>
<script>
const APP_NAME = "WEB-DEMO-CUONGDQ";
const deviceKey = {
created_time: "2020-09-17 22:25:09",
id: "MFswDQYJKoZIhvcNAQEBBQADSgAwRwJAea/IOT6QMv/kw1W8aYzlIG/twyKmjYggL94DbduYC8t7QmZ0JCpK43ugArxzVmXnAU6oe0wiuH57yS4cKLntUQIDAQAB",
key: "MIIBOQIBAAJAea/IOT6QMv/kw1W8aYzlIG/twyKmjYggL94DbduYC8t7QmZ0JCpK43ugArxzVmXnAU6oe0wiuH57yS4cKLntUQIDAQABAkA/81ucif6qbsVAyuwL5Jn95BTmOm2hb+rKfTj8IS3U9EjAMs4ppC79uIMGL8zAQiftY2DOs/QFPgBlHRYBGGlhAiEA6Ar9ZB/Jk/jRvsXfrlbNog95AQrXSsv7ydvsUh9sqrUCIQCGQAVXdSzYBeLaodpatYrrLMRRwOc6iH6rTaYypN3trQIhALhfKxEoNLnPRZEIln9m10MCekn6vC/hPnIYvYBPGb/VAiAHzXbCA4RstcLelCOdvAlr67kpSz3lMAO0rxmmveBMLQIgQx8NQrTVAWvHghZEqEmy/1IAKaziMf4FQQgPt0UGAcc="
};
const socketLink = {
url: "http://localhost:9225",
path: "/socket",
timeout: 10000,
};
let client = new clientSocketLogin.ClientInputInterface(APP_NAME, deviceKey, socketLink);
client.getDeviceId()
.then(deviceId => {
console.log('The device ready: ', deviceId);
})
let myToken =
"xeyJ1c2VybmFtZSI6ImN1b25nLmRxIiwiZGV2aWNlX2lkIjozMSwiaWF0IjoxNjAwMzM3NzU4MzI1LCJleHAiOjE2MzE4NzM3NTgzMjV9.QVFFL2FJR1dRamV5Zm9Ba1I0RGNGT0RtUVBYdlBBUUxMNjkxY2hkYVc2d1pIT0krSFI5ekRZS29Ma3VXT3o2SzNxTFdycVFodkRoMDgvSXhPclB3WHc9PQ==";
const loginForm = {
username: "0123456789",
user_type: "phone",
password: "12345",
expired: 1,
};
client
.loginByUser(
loginForm.username,
loginForm.user_type,
loginForm.password,
loginForm.expired
)
.then((tokenData) => {
if (tokenData.userInfo) {
console.log("Login OK tokenData", tokenData);
} else {
console.log("Login Fail by user");
}
})
</script>
<body>
This is your page for login form
</body>
</html>
proxy token vefify:
const socketConfig = require("../../cfg/resource-server-socket-cfg");
const { VerifyToken } = require("client-socket-nodejs");
let verifyToken = new VerifyToken(socketConfig);