把通讯模块单独划分出来
This commit is contained in:
83
frontend/Web/communication.js
Normal file
83
frontend/Web/communication.js
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
function generateRandomString(length) {
|
||||||
|
let result = '';
|
||||||
|
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||||||
|
const charactersLength = characters.length;
|
||||||
|
|
||||||
|
for (let i = 0; i < length; i++) {
|
||||||
|
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
const socket = io();
|
||||||
|
let __raw_response="";
|
||||||
|
let operation_count=localStorage.getItem("operation_count");
|
||||||
|
let session_token=localStorage.getItem("session_token");
|
||||||
|
let outhentication_key=localStorage.getItem("outhentication_key");
|
||||||
|
socket.on('response', (msg) => {
|
||||||
|
__raw_response=msg;
|
||||||
|
});
|
||||||
|
function sleep(ms) {
|
||||||
|
return new Promise(resolve => setTimeout(resolve, ms));
|
||||||
|
}
|
||||||
|
async function RawRequest(raw_request){
|
||||||
|
socket.emit('request', raw_request);
|
||||||
|
while(true)
|
||||||
|
{
|
||||||
|
if(__raw_response!=""){
|
||||||
|
let response=__raw_response;
|
||||||
|
__raw_response="";
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
await sleep(100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async function ShutDownWholeSystem()
|
||||||
|
{
|
||||||
|
await RawRequest("#ShutDownSystem "+session_token+" "+operation_count+" "+outhentication_key);
|
||||||
|
return "You Guess";
|
||||||
|
}
|
||||||
|
async function Request(req)
|
||||||
|
{
|
||||||
|
operation_count=localStorage.getItem("operation_count");
|
||||||
|
session_token=localStorage.getItem("session_token");
|
||||||
|
outhentication_key=localStorage.getItem("outhentication_key");
|
||||||
|
operation_count++;
|
||||||
|
localStorage.setItem("operation_count", operation_count);
|
||||||
|
let raw_request="#Request "+session_token+" "+operation_count+" "+outhentication_key+"\n"+req;
|
||||||
|
let raw_response=await RawRequest(raw_request);
|
||||||
|
console.log("get raw_response:"+raw_response);
|
||||||
|
let line_numbers_of_res=parseInt(raw_response.split('\n')[0].split(' ')[2]);
|
||||||
|
if(line_numbers_of_res==-1)
|
||||||
|
{
|
||||||
|
console.log("Session expired");
|
||||||
|
let tmp_channel=generateRandomString(10);
|
||||||
|
let ret=await RawRequest('#OpenSession '+tmp_channel);
|
||||||
|
operation_count=0;
|
||||||
|
session_token=ret.split('\n')[1].split(' ')[0];
|
||||||
|
outhentication_key=ret.split('\n')[1].split(' ')[1];
|
||||||
|
localStorage.setItem("session_token", session_token);
|
||||||
|
localStorage.setItem("outhentication_key", outhentication_key);
|
||||||
|
localStorage.setItem("operation_count", operation_count);
|
||||||
|
return await Request(req);
|
||||||
|
}
|
||||||
|
let response="";
|
||||||
|
if(line_numbers_of_res>=1) response=raw_response.split('\n')[1];
|
||||||
|
for(let i=0;i<line_numbers_of_res-1;i++){
|
||||||
|
response+="\n"+raw_response.split('\n')[i+2];
|
||||||
|
}
|
||||||
|
localStorage.setItem("operation_count", operation_count);
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
(async () => {
|
||||||
|
if(session_token==null||outhentication_key==null||operation_count==null){
|
||||||
|
let tmp_channel=generateRandomString(10);
|
||||||
|
let ret=await RawRequest('#OpenSession '+tmp_channel);
|
||||||
|
operation_count=0;
|
||||||
|
session_token=ret.split('\n')[1].split(' ')[0];
|
||||||
|
outhentication_key=ret.split('\n')[1].split(' ')[1];
|
||||||
|
localStorage.setItem("session_token", session_token);
|
||||||
|
localStorage.setItem("outhentication_key", outhentication_key);
|
||||||
|
localStorage.setItem("operation_count", operation_count);
|
||||||
|
}
|
||||||
|
})();
|
@ -8,90 +8,6 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<script src="/socket.io/socket.io.js"></script>
|
<script src="/socket.io/socket.io.js"></script>
|
||||||
<script>
|
<script src="/communication.js"></script>
|
||||||
function generateRandomString(length) {
|
|
||||||
let result = '';
|
|
||||||
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
||||||
const charactersLength = characters.length;
|
|
||||||
|
|
||||||
for (let i = 0; i < length; i++) {
|
|
||||||
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
const socket = io();
|
|
||||||
let __raw_response="";
|
|
||||||
let operation_count=localStorage.getItem("operation_count");
|
|
||||||
let session_token=localStorage.getItem("session_token");
|
|
||||||
let outhentication_key=localStorage.getItem("outhentication_key");
|
|
||||||
socket.on('response', (msg) => {
|
|
||||||
__raw_response=msg;
|
|
||||||
});
|
|
||||||
function sleep(ms) {
|
|
||||||
return new Promise(resolve => setTimeout(resolve, ms));
|
|
||||||
}
|
|
||||||
async function RawRequest(raw_request){
|
|
||||||
socket.emit('request', raw_request);
|
|
||||||
while(true)
|
|
||||||
{
|
|
||||||
if(__raw_response!=""){
|
|
||||||
let response=__raw_response;
|
|
||||||
__raw_response="";
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
await sleep(100);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
async function ShutDownWholeSystem()
|
|
||||||
{
|
|
||||||
await RawRequest("#ShutDownSystem "+session_token+" "+operation_count+" "+outhentication_key);
|
|
||||||
return "You Guess";
|
|
||||||
}
|
|
||||||
async function Request(req)
|
|
||||||
{
|
|
||||||
operation_count=localStorage.getItem("operation_count");
|
|
||||||
session_token=localStorage.getItem("session_token");
|
|
||||||
outhentication_key=localStorage.getItem("outhentication_key");
|
|
||||||
operation_count++;
|
|
||||||
localStorage.setItem("operation_count", operation_count);
|
|
||||||
let raw_request="#Request "+session_token+" "+operation_count+" "+outhentication_key+"\n"+req;
|
|
||||||
let raw_response=await RawRequest(raw_request);
|
|
||||||
console.log("get raw_response:"+raw_response);
|
|
||||||
let line_numbers_of_res=parseInt(raw_response.split('\n')[0].split(' ')[2]);
|
|
||||||
if(line_numbers_of_res==-1)
|
|
||||||
{
|
|
||||||
console.log("Session expired");
|
|
||||||
let tmp_channel=generateRandomString(10);
|
|
||||||
let ret=await RawRequest('#OpenSession '+tmp_channel);
|
|
||||||
operation_count=0;
|
|
||||||
session_token=ret.split('\n')[1].split(' ')[0];
|
|
||||||
outhentication_key=ret.split('\n')[1].split(' ')[1];
|
|
||||||
localStorage.setItem("session_token", session_token);
|
|
||||||
localStorage.setItem("outhentication_key", outhentication_key);
|
|
||||||
localStorage.setItem("operation_count", operation_count);
|
|
||||||
return await Request(req);
|
|
||||||
}
|
|
||||||
let response="";
|
|
||||||
if(line_numbers_of_res>=1) response=raw_response.split('\n')[1];
|
|
||||||
for(let i=0;i<line_numbers_of_res-1;i++){
|
|
||||||
response+="\n"+raw_response.split('\n')[i+2];
|
|
||||||
}
|
|
||||||
localStorage.setItem("operation_count", operation_count);
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
(async () => {
|
|
||||||
if(session_token==null||outhentication_key==null||operation_count==null){
|
|
||||||
let tmp_channel=generateRandomString(10);
|
|
||||||
let ret=await RawRequest('#OpenSession '+tmp_channel);
|
|
||||||
operation_count=0;
|
|
||||||
session_token=ret.split('\n')[1].split(' ')[0];
|
|
||||||
outhentication_key=ret.split('\n')[1].split(' ')[1];
|
|
||||||
localStorage.setItem("session_token", session_token);
|
|
||||||
localStorage.setItem("outhentication_key", outhentication_key);
|
|
||||||
localStorage.setItem("operation_count", operation_count);
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -103,6 +103,9 @@ backend.stdout.on('data', (data) => {
|
|||||||
app.get('/', (req, res) => {
|
app.get('/', (req, res) => {
|
||||||
res.sendFile(join(__dirname, 'index.html'));
|
res.sendFile(join(__dirname, 'index.html'));
|
||||||
});
|
});
|
||||||
|
app.get('/communication.js', (req, res) => {
|
||||||
|
res.sendFile(join(__dirname, 'communication.js'));
|
||||||
|
});
|
||||||
|
|
||||||
io.on('connection', async (socket) => {
|
io.on('connection', async (socket) => {
|
||||||
console.log('a user connected');
|
console.log('a user connected');
|
||||||
|
Reference in New Issue
Block a user