@@ -3,8 +3,9 @@ import ReactDOM from 'react-dom'
3
3
4
4
// const socket = new WebSocket()
5
5
6
- const MyWebSocket = ( ) => {
7
- const wsURI = 'ws://localhost:8765'
6
+ const MyWebSocket = ( props ) => {
7
+
8
+ const { uri} = props
8
9
const [ socket , setSocket ] = useState ( null )
9
10
const [ isOpen , setIsOpen ] = useState ( false )
10
11
const [ cellData , setCellData ] = useState ( "" ) // type=text, textarea
@@ -17,7 +18,7 @@ const MyWebSocket = () => {
17
18
// connect to the websocket server
18
19
if ( socket === null ) {
19
20
20
- setSocket ( new WebSocket ( wsURI ) )
21
+ setSocket ( new WebSocket ( uri ) )
21
22
}
22
23
} , [ socket ] )
23
24
@@ -36,6 +37,9 @@ const MyWebSocket = () => {
36
37
const { data} = event
37
38
const msgData = JSON . parse ( data )
38
39
setResult ( msgData )
40
+ if ( props . callback ) {
41
+ props . callback ( msgData )
42
+ }
39
43
}
40
44
}
41
45
return ( ) => {
@@ -53,7 +57,7 @@ const MyWebSocket = () => {
53
57
54
58
const performOpen = _ => {
55
59
if ( socket && socket . readyState == WebSocket . CLOSED ) {
56
- setSocket ( new WebSocket ( wsURI ) )
60
+ setSocket ( new WebSocket ( uri ) )
57
61
}
58
62
}
59
63
@@ -81,7 +85,7 @@ const MyWebSocket = () => {
81
85
< div > { isOpen &&
82
86
< React . Fragment >
83
87
< textarea placeholder = 'Your cell data' value = { cellData } name = 'cellData' onChange = { handleInputChange } />
84
- { result . result && < div > { result . result } </ div > }
88
+ { result . result && < div className = 'display-result-linebreak' > { result . result } </ div > }
85
89
{ result . error && < div className = 'text-error' > { result . error } </ div > }
86
90
87
91
</ React . Fragment >
@@ -94,9 +98,13 @@ const MyWebSocket = () => {
94
98
95
99
96
100
const App = ( ) => {
101
+ const wsURI = 'ws://localhost:8765'
102
+ const handleCallback = ( event ) => {
103
+ console . log ( event )
104
+ }
97
105
return < div > App
98
106
99
- < MyWebSocket />
107
+ < MyWebSocket uri = { wsURI } callback = { handleCallback } />
100
108
101
109
</ div >
102
110
}
0 commit comments