narinder1231 commited on
Commit
585d8da
·
1 Parent(s): 9a4d513

Add useWebSocket hook for managing text-based WebSocket communication

Browse files
Files changed (1) hide show
  1. src/hooks/useTextWebhook.ts +38 -0
src/hooks/useTextWebhook.ts ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useState, useEffect, useRef } from "react";
2
+
3
+ import { IMessage } from "../interfaces/message";
4
+ import { conversationWebSocket } from "../services/websockets/conversation";
5
+
6
+ const useWebSocket = (conversationId: string) => {
7
+ const [messages, setMessages] = useState<IMessage[]>([]);
8
+ const wsRef = useRef<WebSocket | null>(null);
9
+
10
+ useEffect(() => {
11
+ const ws = conversationWebSocket({ conversationId, modality: "text" });
12
+
13
+ wsRef.current = ws;
14
+
15
+ ws.onmessage = (event) => {
16
+ const message = event.data;
17
+ setMessages((prevMessages) => [...prevMessages, { text: message, sender: "bot" }]);
18
+ };
19
+
20
+ return () => {
21
+ ws.close();
22
+ wsRef.current = null;
23
+ };
24
+ }, [conversationId]);
25
+
26
+ const sendMessage = (message: string) => {
27
+ if (message.trim()) {
28
+ setMessages((prev) => [...prev, { text: message, sender: "user" }]);
29
+ if (wsRef.current?.readyState === WebSocket.OPEN) {
30
+ wsRef.current.send(message);
31
+ }
32
+ }
33
+ };
34
+
35
+ return { messages, sendMessage };
36
+ };
37
+
38
+ export default useWebSocket;