@@ -11,16 +11,20 @@ export class WebSocketService implements OnDestroy {
11
11
private stompClient : Client ;
12
12
private messagesSubject = new BehaviorSubject < any [ ] > ( [ ] ) ;
13
13
public messages$ : Observable < any [ ] > = this . messagesSubject . asObservable ( ) ;
14
+ private connectionSubject = new BehaviorSubject < boolean > ( false ) ;
15
+ public connection$ : Observable < boolean > =
16
+ this . connectionSubject . asObservable ( ) ;
14
17
15
18
constructor ( private http : HttpClient ) {
16
- const socket = new SockJS ( "http://localhost:8080/ws " ) ;
19
+ const socket = new SockJS ( "http://localhost:8080/chat-socket " ) ;
17
20
this . stompClient = new Client ( {
18
21
webSocketFactory : ( ) => socket as WebSocket ,
19
22
reconnectDelay : 5000 ,
20
23
} ) ;
21
24
22
25
this . stompClient . onConnect = ( ) => {
23
- this . stompClient . subscribe ( "/user/queue/messages" , ( message : Message ) => {
26
+ this . connectionSubject . next ( true ) ;
27
+ this . stompClient . subscribe ( "/chat/queue/messages" , ( message : Message ) => {
24
28
this . messagesSubject . next ( [
25
29
...this . messagesSubject . value ,
26
30
JSON . parse ( message . body ) ,
@@ -30,16 +34,21 @@ export class WebSocketService implements OnDestroy {
30
34
31
35
this . stompClient . onStompError = ( error ) => {
32
36
console . error ( "WebSocket connection error" , error ) ;
37
+ this . connectionSubject . next ( false ) ;
33
38
} ;
34
39
35
40
this . stompClient . activate ( ) ;
36
41
}
37
42
38
43
sendMessage ( message : any ) : void {
39
- this . stompClient . publish ( {
40
- destination : "/app/chat" ,
41
- body : JSON . stringify ( message ) ,
42
- } ) ;
44
+ if ( this . connectionSubject . value ) {
45
+ this . stompClient . publish ( {
46
+ destination : "/app/chat" ,
47
+ body : JSON . stringify ( message ) ,
48
+ } ) ;
49
+ } else {
50
+ console . error ( "WebSocket connection is not established" ) ;
51
+ }
43
52
}
44
53
45
54
loadMessages ( conversationId : number ) : void {
0 commit comments