-
Notifications
You must be signed in to change notification settings - Fork 868
/
Copy pathindex.html
118 lines (105 loc) · 3.22 KB
/
index.html
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>http-proxy-middleware - WebSocket example</title>
<style>
fieldset {
border: 0;
}
label {
display: inline-block;
width: 5em;
vertical-align: top;
}
code {
background-color: #eee;
}
</style>
</head>
<body>
<h2>WebSocket demo</h2>
<p>Proxy <code>ws://localhost:3000</code> to <code>ws://ws.ifelse.io</code></p>
<fieldset id="configuration">
<p>
<label for="location">location:</label>
<input id="location" type="text" value="ws://localhost:3000" />
<button id="connectBtn">connect</button>
<button id="disconnectBtn" disabled="disabled">disconnect</button>
</p>
</fieldset>
<fieldset id="messaging" disabled="disabled">
<p>
<label for="message">message:</label>
<input type="text" id="message" value="Hello WebSocket" />
<button id="sendBtn">send</button>
</p>
<p>
<label for="logger">log:</label>
<textarea id="logger" cols="30" rows="10"></textarea>
</p>
</fieldset>
<script>
window.onload = function () {
// elements
const configuration = document.getElementById('configuration');
const location = document.getElementById('location');
const connectBtn = document.getElementById('connectBtn');
const disconnectBtn = document.getElementById('disconnectBtn');
const messaging = document.getElementById('messaging');
const message = document.getElementById('message');
const sendBtn = document.getElementById('sendBtn');
const logger = document.getElementById('logger');
// ws
let socket;
connectBtn.onclick = () => {
connect();
};
disconnectBtn.onclick = () => {
disconnect();
};
sendBtn.onclick = () => {
sendMessage(message.value);
};
function connect() {
setupSocket(location.value);
toggleControls();
}
function disconnect() {
socket.close();
socket = undefined;
toggleControls();
}
function sendMessage(val) {
log('SEND: ' + val);
socket.send(val);
}
function setupSocket(url) {
socket = new WebSocket(url);
socket.addEventListener('open', () => {
log('CONNECTED');
});
socket.addEventListener('close', () => {
log('DISCONNECTED');
});
socket.addEventListener('error', () => {
log('SOCKET ERROR OCCURRED');
});
socket.addEventListener('message', (msg) => {
log('RECEIVED:' + msg.data);
});
}
function log(message) {
logger.value = logger.value + message + '\n';
logger.scrollTop = logger.scrollHeight; // scroll to bottom
}
function toggleControls() {
[connectBtn, disconnectBtn, messaging].forEach((el) => toggleEnabled(el));
}
function toggleEnabled(el) {
el.disabled = el.disabled ? false : true;
}
};
</script>
</body>
</html>