-
Notifications
You must be signed in to change notification settings - Fork 0
/
websocket.js
127 lines (110 loc) · 2.54 KB
/
websocket.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
const wbskt = require('ws');
let connected =[];
var urlSocketMap =new Map();
var mapData = new Map();
const ws = new wbskt.Server({ port: 5678 });
ws.on('connection', function connection(con){
connected.push(con);
console.log("connected");
// console.log(con);
// con.send();
con.on('message', function incoming(message){
message=JSON.parse(message);
console.log('mes %s',message);
if(message.type==1)
{
let val = [];
if(urlSocketMap.has(message.url))
{
// console.log("fond");
val=urlSocketMap.get(message.url);
con.send(JSON.stringify({data:mapData.get(message.url)}));
}
val.push(con);
urlSocketMap.set(message.url,val);
// console.log(urlSocketMap);
}
else
{
let valuedata= mapData.get(message.url);
let newdata ="";
if(message.op == 1)
{
newdata = valuedata.slice(0,message.si) + valuedata.substring(message.si+1,valuedata.length);
}
else if(message.op == 2)
{
if(mapData.has(message.url))
{
if(message.se >= 0)
{
newdata=message.data + valuedata.substring(message.se,valuedata.length);
}
else
{
newdata=message.data + valuedata.substring(message.cbp,valuedata.length);
}
}
else
{
newdata = message.data;
}
}
else
{
if(mapData.has(message.url))
{
newdata=message.data + valuedata.substring(message.data.length-1,valuedata.length);
}
else
{
newdata = message.data;
}
}
mapData.set(message.url,newdata);
console.log(mapData.get("erte"));
let cons=[];
cons=urlSocketMap.get(message.url);
for(let i in cons)
{
if(cons[i] != con)
{
// console.log("con" + cons[i]);
if(message.op ==2)
{
var rsi;
if(message.cpb==-1 || (message.si == message.cbp))
{
rsi = message.si - message.se;
}
// else if(message.si == message.cbp)
// {
// rsi = message.si - message.se;
// }
else
{
rsi=message.si - message.cbp;
}
cons[i].send(JSON.stringify({data:newdata, rsi:message.cbp, rsidiff:rsi}));
}
else if(message.op ==1)
{
cons[i].send(JSON.stringify({data:newdata, rsi:message.si, rsidiff:-1}));
}
else
{
cons[i].send(JSON.stringify({data:newdata, rsi:message.si-1, rsidiff:1}));
}
}
}
}
});
con.on('close',(client_soc) =>{
connected.splice(connected.indexOf(client_soc.length),1);
console.log("dscnt");
});
con.onerror = function(event) {
console.error("WebSocket error observed:", event);
};
});
return ws;