<prompt> Tekeleza programu ya gumzo la wakati halisi kwa kutumia WebSockets katika TypeScript, kuruhusu watumiaji kutuma na kupokea ujumbe papo hapo. Mazingira ya nyuma yanapaswa kujengwa kwa kutumia Node.js na kuhifadhi historia ya gumzo katika hifadhidata ya MongoDB.  <response>: Ili kutekeleza programu ya gumzo la wakati halisi kwa kutumia WebSockets katika TypeScript, tutatumia teknolojia zifuatazo:1. Node.js iliyo na Express kwa seva ya nyuma2. Socket.IO kwa mawasiliano ya WebSocket3. MongoDB kuhifadhi historia ya sogaKwanza, hebu tuanzishe mradi wetu na tusakinishe utegemezi muhimu.1. Anzisha mradi mpya wa Node.js:npm init -y2. Sakinisha TypeScript na vifurushi vinavyohitajika:npm kusakinisha typescript ts-node typesnode --save-dev3. Unda faili ya tsconfig.json ili kusanidi TypeScript:json compilerOptions: target: es6, module: commonjs, outDir: .dist, kali: kweli, esModuleInterop: kweli , include: src.ts, exclude: node_modules4. Sakinisha vifurushi vinavyohusiana na Express, Socket.IO na MongoDB:npm sakinisha express socket.io mongodb typesexpress typessocket.ioSasa, wacha tuunde muundo wetu wa maombi:- src - index.ts - programu.ts - chatController.ts - hifadhidata.tsWacha tuanze kwa kusanidi seva yetu ya Express na kusanidi Socket.IO katika app.ts: chapa srcapp.tskuagiza Express kutoka kueleza;agiza Seva kutoka socket.io;agiza createServer kutoka http;const app express;const server createServerprogramu;const io Seva mpya seva;io.onmuunganisho, tundu console.logMtumiaji ameunganishwa: socket.id; Shughulikia matukio ya gumzo hapa soketi.onondoa, console.logMtumiaji amekataliwa: socket.id; ;;safirisha seva chaguo-msingi;Kisha, hebu tusanidi muunganisho wetu wa MongoDB katika database.ts: chapa srcdatabase.tsagiza MongoClient kutoka mongodb;const uri mongodb:localhost:27017;const dbName chat-app;export const connectToDB async jaribu const mteja MongoClient mpyauri; subiri mteja.connect; console.logImeunganishwa kwa MongoDB; rudisha mteja.dbdbName; kukamata kosa console.errorKosa la kuunganisha kwa MongoDB, kosa; mchakato.toka1; ;Sasa, hebu tuunde kidhibiti cha gumzo kwa ajili ya kushughulikia ujumbe na kuzihifadhi kwenye hifadhidata katika chatController.ts: chapa srcchatController.tsagiza Soketi kutoka socket.io;agiza Db kutoka mongodb;agiza connectToDB kutoka .database;acha db: Db;async db kusubiri connectToDB;;interface Ujumbe jina la mtumiaji: kamba; maudhui: kamba; muhuri wa wakati: Tarehe;export const handleChatEvents tundu: Soketi socket.onujumbe, async msg: Message Hifadhi ujumbe kwenye hifadhidata await db.collectionmessages.insertOnemsg; Tangaza ujumbe kwa wateja wote waliounganishwa socket.broadcast.emitujumbe, msg; ;;Kisha, sasisha app.ts ili kutumia kidhibiti cha gumzo: chapa srcapp.tskuagiza Express kutoka kueleza;agiza Seva kutoka socket.io;agiza createServer kutoka http;leta handleChatEvents kutoka .chatController;const app express;const server createServerprogramu;const io Seva mpya seva;io.onmuunganisho, tundu console.logMtumiaji ameunganishwa: socket.id; handleChatEventstundu; soketi.onondoa, console.logMtumiaji amekataliwa: socket.id; ;;safirisha seva chaguo-msingi;Hatimaye, hebu tuunde sehemu yetu ya kuingilia index.ts: chapa srcindex.tsingiza programu kutoka kwa .app;const PORT process.env.PORT 3000;app.listenPORT, console.logSeva inafanya kazi kwenye bandari PORT;;Sasa unaweza kuendesha programu yako kwa kutumia amri ifuatayo:npx ts-nodi srcindex.tsHii itaanzisha seva ya WebSocket ambayo inasikiliza ujumbe wa gumzo na kuzihifadhi katika MongoDB. Ili kuunda kiteja cha mbele ili kuingiliana na seva hii, unaweza kutumia mfumo wowote wa mandhari ya mbele maarufu kama React, Angular, au Vue pamoja na maktaba ya mteja ya Socket.IO.Usisahau kuongeza hati kwenye faili yako ya package.json ili kurahisisha kuendesha na kujenga mradi wako:jsonscripts: start: ts-node srcindex.ts, build: tsc, serve: node distindex.js 