استنساخ هذا المستودع
قم بتركيب المستودع وقم بتشغيل هذا الأمر لتثبيت التبعيات
make setup
make run
localhost:8080 بعد تشغيل الخادم ، افتح عميل WebSocket الخاص بك. إذا لم يكن لديك أي ، جرب Websocket King Extension for Chrome.
اتصل بـ ws://localhost:8080/socket ، سيتم الترحيب بك من قبل الخادم.
Server: Welcome! Your ID is f0ab664a-5af3-4f8d-8afe-eb93085267e4
{
"action": "subscribe",
"topic": "world"
}
{
"action": "publish",
"topic": "world",
"message": "Hello world!"
}
{
"action": "unsubscribe",
"topic": "world"
}
قد تسأل "لماذا يجب أن أستخدم WebSocket بدلاً من REST API"؟
يستخدم REST API HTTP الذي يمكنه إرسال الاستجابة مرة واحدة لكل طلب.
وفي الوقت نفسه ، يمكن استخدام WebSocket للاتصال ثنائي الاتجاه المستمر دون الحاجة إلى إعادة إنشاء اتصال في كل مرة.
يمكن أن يكون هذا مفيدًا في بعض السيناريو مثل الدردشة أو الحانة.
فيما يلي الرسم البياني لتصور الفرق بين HTTP و WebSocket.

يصف هذا المخطط الانسيابي كيفية عمل هذا الخادم. 
cmd
└── main
└── main.go
internal
└── websocket
└── handler.go
└── model.go
└── server.go
Main.GO : الملف الرئيسي الذي سيتم تنفيذه.
Handler.go : مقابض مفتوحة/إغلاق الاتصال وتمرير الرسالة إلى الخادم.
Model.GO : يخزن النماذج المستخدمة من قبل الخادم.
Server.go : يقوم بتشغيل إجراء محدد وفقًا لرسالة العميل ، ويحتوي أيضًا على وظائف يحتاجها الخادم للعمل بشكل صحيح كخادم WebSocket.
هذا المستودع أبعد ما يكون عن المثالية. إنه مجرد دليل على المفهوم.
على الرغم من أن هذا المستودع قريب من حانة ، لا يزال من الممكن استخدامه لخادم الدردشة.
على سبيل المثال ، يمكننا إضافة وظيفة على Socket متصلة بحيث يتم مشترك العميل تلقائيًا في معرفه الخاص كموضوع. ثم يقوم العملاء الآخرون باستخدام معرف المستخدم هذا كموضوع لنشر رسالة.
لقد حاولت بناء مثل هذا الحل مع إذن لمنع المستخدم الآخرين من الاشتراك في معرف الآخر وهو يعمل.
هذا المستودع مستوحى من Golang-Pubsub بواسطة tabvn