@@ -30,15 +30,15 @@ <h2>WebSocket demo</h2>
30
30
< p >
31
31
< label for ="location "> location:</ label >
32
32
< input id ="location " type ="text " value ="ws://localhost:3000 ">
33
- < button id ="connect "> connect</ button >
34
- < button id ="disconnect " disabled ="disabled "> disconnect</ button >
33
+ < button id ="connectBtn "> connect</ button >
34
+ < button id ="disconnectBtn " disabled ="disabled "> disconnect</ button >
35
35
</ p >
36
36
</ fieldset >
37
37
< fieldset id ="messaging " disabled ="disabled ">
38
38
< p >
39
39
< label for ="message "> message:</ label >
40
40
< input type ="text " id ="message " value ="Hello WebSocket ">
41
- < button id ="send "> send</ button >
41
+ < button id ="sendBtn "> send</ button >
42
42
</ p >
43
43
< p >
44
44
< label for ="logger "> log:</ label >
@@ -49,44 +49,61 @@ <h2>WebSocket demo</h2>
49
49
< script >
50
50
window . onload = function ( ) {
51
51
// elements
52
- var configuration = document . getElementById ( 'configuration' ) ;
53
- var location = document . getElementById ( 'location' ) ;
54
- var connect = document . getElementById ( 'connect ' ) ;
55
- var disconnect = document . getElementById ( 'disconnect ' ) ;
56
- var messaging = document . getElementById ( 'messaging' ) ;
57
- var message = document . getElementById ( 'message' ) ;
58
- var send = document . getElementById ( 'send ' ) ;
59
- var logger = document . getElementById ( 'logger' ) ;
52
+ const configuration = document . getElementById ( 'configuration' ) ;
53
+ const location = document . getElementById ( 'location' ) ;
54
+ const connectBtn = document . getElementById ( 'connectBtn ' ) ;
55
+ const disconnectBtn = document . getElementById ( 'disconnectBtn ' ) ;
56
+ const messaging = document . getElementById ( 'messaging' ) ;
57
+ const message = document . getElementById ( 'message' ) ;
58
+ const sendBtn = document . getElementById ( 'sendBtn ' ) ;
59
+ const logger = document . getElementById ( 'logger' ) ;
60
60
61
61
// ws
62
- var socket ;
63
-
64
- connect . onclick = function ( ) {
65
- connect . disabled = true ;
66
- disconnect . disabled = false ;
67
- messaging . disabled = false ;
68
-
69
- socket = new WebSocket ( location . value ) ;
70
- socket . onopen = function ( ) { log ( 'CONNECTED' ) ; } ;
71
- socket . onclose = function ( ) { log ( 'DISCONNECTED' ) ; } ;
72
- socket . onerror = function ( ) { log ( 'SOCKET ERROR OCCURED' ) ; } ;
73
- socket . onmessage = function ( msg ) { log ( 'RECEIVED:' + msg . data ) ; } ;
62
+ let socket ;
63
+
64
+ connectBtn . onclick = ( ) => { connect ( ) ; }
65
+ disconnectBtn . onclick = ( ) => { disconnect ( ) ; }
66
+ sendBtn . onclick = ( ) => { sendMessage ( message . value ) ; }
67
+
68
+ function connect ( ) {
69
+ setupSocket ( location . value ) ;
74
70
}
75
71
76
- disconnect . onclick = function ( ) {
77
- connect . disabled = false ;
78
- disconnect . disabled = true ;
79
- messaging . disabled = true ;
80
- socket . close ( ) ;
72
+ function disconnect ( ) {
73
+ socket . close ( ) ;
74
+ socket = undefined ;
81
75
}
82
76
83
- send . onclick = function ( ) {
84
- log ( 'SEND: ' + message . value ) ;
85
- socket . send ( message . value ) ;
77
+ function sendMessage ( val ) {
78
+ log ( 'SEND: ' + val ) ;
79
+ socket . send ( val ) ;
86
80
} ;
87
81
82
+ function setupSocket ( url ) {
83
+ socket = new WebSocket ( url ) ;
84
+ socket . addEventListener ( 'open' , ( ) => {
85
+ log ( 'CONNECTED' ) ;
86
+ toggleControls ( ) ;
87
+ } )
88
+ socket . addEventListener ( 'close' , ( ) => {
89
+ log ( 'DISCONNECTED' ) ;
90
+ toggleControls ( )
91
+ } )
92
+ socket . addEventListener ( 'error' , ( ) => { log ( 'SOCKET ERROR OCCURED' ) ; } )
93
+ socket . addEventListener ( 'message' , ( msg ) => { log ( 'RECEIVED:' + msg . data ) ; } )
94
+ }
95
+
88
96
function log ( message ) {
89
- logger . value = logger . value + message + '\n'
97
+ logger . value = logger . value + message + '\n' ;
98
+ logger . scrollTop = logger . scrollHeight ; // scroll to bottom
99
+ }
100
+
101
+ function toggleControls ( ) {
102
+ [ connectBtn , disconnectBtn , messaging ] . forEach ( el => toggleEnabled ( el ) )
103
+ }
104
+
105
+ function toggleEnabled ( el ) {
106
+ el . disabled = ( el . disabled ) ? false : true ;
90
107
}
91
108
92
109
}
0 commit comments