Spaces:
Sleeping
Sleeping
Download DO_NOT_TOUCH_THIS/services/MessageService.ts from harshvisualz/websocket-chat: direct link, hf CLI and curl.
- Browser
- Download file 2.18 kB
-
https://huggingface.co/spaces/harshvisualz/websocket-chat/resolve/main/DO_NOT_TOUCH_THIS/services/MessageService.ts
- Command line
-
hf download hf://spaces/harshvisualz/websocket-chat/DO_NOT_TOUCH_THIS/services/MessageService.ts
-
curl -L -o MessageService.ts https://huggingface.co/spaces/harshvisualz/websocket-chat/resolve/main/DO_NOT_TOUCH_THIS/services/MessageService.ts
2.18 kB
| import RoomServices from './RoomServices.js' | |
| import WebSocket from 'ws' | |
| class MessageService { | |
| username: string | |
| message: string | |
| room_id: string | |
| action: string | |
| rooms: RoomServices | |
| con: WebSocket | |
| constructor({ | |
| msg, | |
| rooms, | |
| con, | |
| }: { | |
| msg: string | |
| rooms: RoomServices | |
| con: WebSocket | |
| }) { | |
| const layers = JSON.parse(msg) | |
| this.room_id = layers['room_id'] | |
| this.username = layers['username'] | |
| this.message = layers['message'] | |
| this.action = layers['action'] | |
| this.rooms = rooms | |
| this.con = con | |
| if (this.action.toLowerCase() === 'join') { | |
| this.join() | |
| } else if (this.action.toLowerCase() === 'leave') { | |
| this.leave() | |
| } else { | |
| this.broadcast() | |
| } | |
| } | |
| join() { | |
| this.rooms.putRoom(this.room_id, this.username, this.con) | |
| this.broadcast() | |
| } | |
| leave() { | |
| this.rooms.leaveRoom(this.room_id, this.username) | |
| this.broadcast() | |
| } | |
| broadcast() { | |
| if (!this.rooms.hasRoom(this.room_id)) return | |
| if (!this.rooms.getRoom(this.room_id)) return | |
| let arr_rooms = this.rooms.getRoom(this.room_id) | |
| if (!arr_rooms) return | |
| for (const [key, value] of arr_rooms) { | |
| if (this.action.toLowerCase() === 'join') { | |
| value.send( | |
| `${this.username} has joined the ${this.room_id} chat!` | |
| ) | |
| } else if (this.action.toLowerCase() === 'leave') { | |
| value.send( | |
| `${this.username} has left the ${this.room_id} chat!` | |
| ) | |
| } else { | |
| value.send(`${this.username}: ${this.message}`) | |
| } | |
| } | |
| } | |
| broadcast_message(msg: string) { | |
| if (!this.rooms.hasRoom(this.room_id)) return | |
| if (!this.rooms.getRoom(this.room_id)) return | |
| let arr_rooms = this.rooms.getRoom(this.room_id) | |
| if (!arr_rooms) return | |
| for (const [key, value] of arr_rooms) { | |
| value.send(`${this.username}: ${msg}`) | |
| } | |
| } | |
| } | |
| export default MessageService | |