0Pricing
Go Academy · درس

أساسيات WebSocket

اتصالات ثنائية الاتجاه في الوقت الفعلي

أساسيات WebSocket درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.

اتصال فوري ثنائي الاتجاه

يعمل HTTP بنمط الطلب والاستجابة: يطلب العميل ويجيب الخادم، ثم ينتهي الاتصال (منطقيًا). أما الدردشة ولوحات المعلومات المباشرة والألعاب فتحتاج إلى قناة ثنائية الاتجاه ومستمرة. وهذا ما توفره WebSockets.

مصافحة الترقية

يبدأ اتصال WebSocket كطلب HTTP عادي مع ترويسات خاصة:

  • Upgrade: websocket
  • Connection: Upgrade

يستجيب الخادم بالرمز 101 Switching Protocols، ويُعاد استخدام مقبس TCP لإطارات كاملة الازدواج.

لماذا لا نستخدم الاستطلاع فحسب

قبل ظهور WebSockets، كانت التطبيقات تستخدم الاستطلاع (الطلبات المتكررة) أو الاستطلاع الطويل. يهدر كلاهما النطاق الترددي ويضيف زمن تأخير. أما WebSockets فتحافظ على اتصال واحد مفتوح، لذلك يمكن لأي طرف الإرسال فورًا.

إطارات بدلًا من الطلبات

بعد الترقية، تنتقل البيانات على هيئة إطارات خفيفة بدلًا من رسائل HTTP. ويمكن أن تكون الإطارات نصية أو ثنائية، كما توجد إطارات تحكم لـ ping/pong والإغلاق.

ازدواج كامل

بخلاف HTTP، يمكن لكلا الطرفين الإرسال في أي وقت من دون انتظار رد. ويستطيع الخادم دفع إشعار لحظة تغير شيء ما، بينما يرسل العميل الإدخال بالتزامن.

ws مقابل wss

مثل http/https، لدى WebSockets مخططان:

  • ws:// بنص صريح
  • wss:// عبر TLS (استخدمه في بيئة الإنتاج)

دعم المكتبة القياسية

لا تحتوي مكتبة Go القياسية على تنفيذ لـ WebSocket ضمن net/http وحدها. يستخدم المجتمع عادةً github.com/gorilla/websocket أو nhooyr.io/websocket. وسنتناول gorilla في الدرس التالي.

import "github.com/gorilla/websocket"

نموذج ذهني

تخيّل WebSocket كمكالمة هاتفية:

  • الاتصال بالرقم = مصافحة ترقية HTTP
  • الخط المفتوح = الاتصال المستمر
  • التحدث في الاتجاهين = إطارات ثنائية الاتجاه بالكامل
  • إنهاء المكالمة = إطار الإغلاق

أنواع الرسائل

هناك نوعان أساسيان من إطارات البيانات:

  • Text تحمل UTF-8 (وغالبًا JSON)
  • Binary تحمل بايتات خام (مثل protobuf والصور)

تدير إطارات التحكم (ping وpong وclose) الاتصال نفسه.

متى تتألق WebSockets

تُعد مناسبة جدًا لـ:

  • المحادثات ومعرفة حالة الاتصال
  • التداول المباشر أو النتائج الرياضية المباشرة
  • التحرير التعاوني
  • حالة الألعاب متعددة اللاعبين

إذا كان المطلوب إرسال البيانات من الخادم إلى العميل في اتجاه واحد فقط، فقد تكون Server-Sent Events أبسط.

قابل للتشغيل: تجسيد فكرة الإطارات

يحتاج كود WebSocket إلى مكتبة خارجية، لذا نقدم هنا تشبيهًا باستخدام المكتبة القياسية: دالة تصنّف الرسالة على أنها نصية أو ثنائية، لتوضيح أنواع الإطارات.

package main

import (
    "fmt"
    "unicode/utf8"
)

func frameType(data []byte) string {
    if utf8.Valid(data) {
        return "text"
    }
    return "binary"
}

func main() {
    fmt.Println(frameType([]byte("hello")))
    fmt.Println(frameType([]byte{0xff, 0x00, 0x01}))
}

تحقق سريع

اختبر مدى فهمك لأساسيات WebSocket.

مراجعة

لقد تعلمت أساسيات WebSocket:

  • توفر اتصالًا مستمرًا وتواصلًا ثنائي الاتجاه بالكامل
  • تبدأ بمصافحة ترقية HTTP (استجابة 101)
  • تتدفق البيانات على شكل إطارات نصية أو ثنائية؛ وتدير إطارات التحكم الاتصال
  • استخدم wss:// في بيئة الإنتاج؛ إذ يعتمد Go على مكتبات مثل gorilla/websocket

الأسئلة الشائعة

هل درس «أساسيات WebSocket» مجاني؟

نعم — نص درس «أساسيات WebSocket» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.

ماذا ستتعلم في «أساسيات WebSocket»؟

اتصالات ثنائية الاتجاه في الوقت الفعلي تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟

لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «أساسيات WebSocket»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟

نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات WebSocket
  2. استخدام gorilla/websocket
  3. بث الرسائل
  4. إدارة الاتصالات
← العودة إلى Go Academy