<prompt> Tekeleza programu ya gumzo la wakati halisi kwa kutumia WebSockets katika Go. Programu inapaswa kuruhusu wateja wengi kuunganishwa na kutuma ujumbe kwa kila mmoja. Hifadhi historia ya gumzo katika hifadhidata ya MySQL.  <response>: Ili kutekeleza programu ya mazungumzo ya wakati halisi kwa kutumia WebSockets in Go, tutatumia kifurushi cha gorillawebsocket kushughulikia miunganisho ya WebSocket na kifurushi cha go-sql-drivermysql ili kuingiliana na hifadhidata ya MySQL. Hapa kuna muhtasari wa jinsi unaweza kuunda programu hii:1. Sakinisha vifurushi vinavyohitajika:bashinenda upate -u github.comgorillawebsocketnenda upate -u github.comgo-sql-drivermysql2. Unda faili ya main.go na uingize vifurushi vinavyohitajika:nendakifurushi kikuukuagiza databasesqlusimbajijsonfmtloginethttpgithub.comgorillawebsocket_ github.comgo-sql-drivermysql3. Bainisha muundo wa ujumbe na wateja:nendachapa muundo wa ujumbe Mfuatano wa jina la mtumiaji json:jina la mtumiajiMfuatano wa ujumbe json:ujumbeaina ya muundo wa mteja conn websocket.ConnsendCh chan Ujumbe4. Anzisha vigezo vya kimataifa kwa wateja na kiboreshaji:nendavar clients tengeneza ramaniMtejaboolvar broadcast makechan Ujumbevar upgrader websocket.UpgraderCheckOrigin: funcr http.Ombi bool kurudi kweli,5. Unganisha kwenye hifadhidata ya MySQL:nendafunc connectDB sql.DB, hitilafu db, err : sql.Openmysql, username:passwordtcplocalhost:3306chat_dbikiwa makosa ! nil kurudi nil, makosarudisha db, hapana6. Tekeleza utendakazi ili kushughulikia miunganisho mipya ya WebSocket:nendafunc handleConnectionsw http.ResponseWriter, r http.Ombi ws, err : kiboreshaji. Boreshaw, r, nilikiwa makosa ! nil log.Fatalhitilafukuahirisha ws.Fungamteja : Mtejaconn: ws, sendCh: makechan Messagewatejamteja kwelikwa var msg Ujumbemakosa : ws.ReadJSONmsgikiwa makosa ! nil kufuta mteja, mtejamapumzikotangaza - msg7. Tekeleza utendakazi ili kushughulikia ujumbe wa utangazaji:nendafunc handleMessages db, kosa : connectDBikiwa makosa ! nil log.FatalHitilafu ya muunganisho wa hifadhidata:, hitilafukurudiahirisha db.Fungakwa msg : -matangazostmt, err : db. TayarishaINGIZA KATIKA historia_ya_chatjina la mtumiaji, ujumbe THAMANI?, ?ikiwa makosa ! nil log.PrintlnHitilafu katika kuandaa taarifa:, hitilafuendelea_, err stmt.Execmsg.Jina la mtumiaji, msg.Messageikiwa makosa ! nil log.PrintlnHitilafu katika kuhifadhi ujumbe kwenye hifadhidata:, hitilafuendeleakwa mteja : wateja mbalimbali client.sendCh - msg8. Tekeleza kazi kuu ili kuanzisha seva na vidhibiti vya WebSocket:nendafunc main fs : http.FileServerhttp.Dirummahttp.Hushughulikia, fshttp.HandleFuncws, handleConnectionsnenda handleMessagesfmt.PrintlnSeva ilianza :8000makosa : http.ListenAndServe:8000, nilikiwa makosa ! nil log.FatalListenAndServe:, makosa9. Unda folda ya umma na faili ya index.html kwa mandhari ya mbele:html Programu ya Gumzo kichwa Tuma fomu mwili html10. Tekeleza programu:bashikwenda kukimbia main.goSasa, unaweza kufungua madirisha ya vivinjari vingi na uende kwenye ili kujaribu programu ya gumzo. Historia ya gumzo itahifadhiwa katika hifadhidata ya MySQL.Kumbuka kuwa huu ni utekelezaji wa kimsingi wa programu ya gumzo ya wakati halisi kwa kutumia WebSockets katika Go. Unaweza kutaka kuongeza vipengele zaidi kama vile uthibitishaji wa mtumiaji, kushughulikia makosa, na muundo bora wa mandhari ya mbele kwa programu iliyo tayari kwa uzalishaji. 