Skip to content

Instantly share code, notes, and snippets.

@naus3a
Created March 17, 2021 18:19
Show Gist options
  • Save naus3a/40a3cf5378160feeb53bc1a5fd6e057b to your computer and use it in GitHub Desktop.
Save naus3a/40a3cf5378160feeb53bc1a5fd6e057b to your computer and use it in GitHub Desktop.
socket.io client test unit
<!DOCTYPE html>
<head>
<script src="https://cdn.socket.io/3.1.3/socket.io.min.js" integrity="sha384-cPwlPLvBTa3sKAgddT6krw0cJat7egBga3DJepJyrLl4Q9/5WLra3rrnMcyTyOnh" crossorigin="anonymous"></script>
</head>
<body>
<script>
function sha256(message) {
// encode as UTF-8
const msgBuffer = new TextEncoder().encode(message);
// hash the message
const hashBuffer = crypto.subtle.digest('SHA-256', msgBuffer);
// convert ArrayBuffer to Array
const hashArray = Array.from(new Uint8Array(hashBuffer));
// convert bytes to hex string
const hashHex = hashArray.map(b => ('00' + b.toString(16)).slice(-2)).join('');
return hashHex;
}
let key = "XXXXXXXXXX";
let payload = {
'type': 'sensor',
'sensor_serial': 'nau1',
'_dev_sensor_private_key': 'XXXXXXXXXXX'
};
let time = Math.floor(Date.now() / 1000);
let plainSignature = time + "_" + btoa(JSON.stringify(payload)) + "_" + key;
let signature = sha256(plainSignature);
let token = {
'payload': payload,
'time': time,
'signature': signature
};
const socket = io("https://websockets.getportal.ai", {
autoconnect: false,
transport: "websocket",
EIO: 3,
token: JSON.stringify(token)
});
socket.on("connect_error", (err) => {
console.log(err.message);
});
socket.on("connect", ()=>{
console.log("connected");
});
socket.connect();
</script>
</body>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment