gwsocket عبارة عن خادم WebSocket بسيط ومستقل ومستقل للغة ومتوافق مع RFC6455 ومكتوب بلغة C. وهو يقع بين التطبيق الخاص بك ومتصفح العميل، مما يوفر اتصالاً سريعًا ثنائي الاتجاه بين هذين الاثنين بسهولة ومرونة. مزيد من المعلومات على: https://gwsocket.io.
الأمر بسيط جدًا، ما عليك سوى إعادة توجيه الإخراج من تطبيقك (stdout) إلى stdin
أو إلى ملف (مسار الإخراج المسمى) والسماح لـ gwsocket بنقل البيانات إلى المتصفح - هذا كل شيء.
على سبيل المثال، لا يمكن أن يكون إدخال سجلات الخادم الخاص بك إلى المتصفح أسهل
# tail -f /var/log/nginx/access.log > /tmp/wspipein.fifo
أو
# tail -f /var/log/nginx/access.log | gwsocket
يمكنك أيضًا الحصول على بيانات العميل في (stdin) تطبيقك. في الواقع، يمكنك أيضًا إرسال مخرجات برنامج ncurses المفضل لديك إلى المتصفح. انظر سكرينكست أعلاه.
كنت بحاجة إلى خادم WebSocket سريع وبسيط وخالي من التبعيات ولا مكتبات ومتوافق مع RFC6455 ومكتوب بلغة C ويمكنني استخدامه للإصدار 1.0 من GoAccess عن طريق إدخال البيانات وإخراجها ببساطة - أصبح WebSockets سهلاً!
gwsocket لا يعرف اللغة، انظر إلى صفحة الدليل للحصول على مزيد من التفاصيل والأمثلة حول كيفية تلقي البيانات من المتصفح وكيفية إرسالها إلى المتصفح.
تثبيت gwsocket سهل جدًا. ما عليك سوى تنزيله واستخراجه وتجميعه باستخدام:
$ wget https://tar.gwsocket.io/gwsocket-0.4.tar.gz
$ tar -xzvf gwsocket-0.4.tar.gz
$ cd gwsocket-0.4/
$ ./configure
$ make
# make install
لا حاجة للتبعيات. كم هو لطيف أليس كذلك :)، حسنًا تقريبًا، تحتاج إلى gcc
، make
، وما إلى ذلك.
$ git clone s://github.com/allinurl/gwsocket.git
$ cd gwsocket
$ autoreconf -fiv
$ ./configure
$ make
# make install
من أجل إنشاء قناة بين التطبيق الخاص بك ومتصفح العميل، يوفر gwsocket طريقتين تسمحان للمستخدم بإرسال البيانات داخل وخارج. الأول هو من خلال استخدام الإدخال القياسي (stdin)، والإخراج القياسي (stdout). الطريقة الثانية هي من خلال رأس ذو حجم ثابت متبوعًا بالحمولة. انظر الخيارات أدناه لمزيد من التفاصيل.
يعد الإدخال/الإخراج القياسي أبسط طريقة لإرسال/استقبال البيانات من/إلى العميل. ومع ذلك، فهو يقتصر على بث الرسائل لجميع العملاء. لإرسال رسائل إلى عميل معين أو تلقيها منه، استخدم الوضع الصارم في القسم التالي. انظر الأمثلة الخاصة باللغة هنا.
تطبق gwsocket البروتوكول الصغير الخاص بها لإرسال/استقبال البيانات. على النقيض من وضع stdin/stdout ، يسمح لك الوضع الصارم بإرسال/استقبال البيانات إلى/من عملاء متصلين محددين بالإضافة إلى تتبع من فتح/أغلق اتصال WebSocket. كما أنه يمنحك القدرة على حزم وإرسال أكبر قدر ممكن من البيانات في رسالة واحدة. انظر الأمثلة الخاصة باللغة هنا.
يمكن توفير الخيارات التالية لسطر الأوامر.
خيار سطر الأوامر | وصف |
---|---|
-p --port | يحدد المنفذ للربط. |
-h --help | مساعدة في سطر الأوامر. |
-V --version | عرض معلومات الإصدار والخروج. |
--access-log=<path/file> | يحدد المسار/الملف لسجل الوصول. |
--addr=<addr> | يحدد العنوان المراد ربطه. |
--echo-mode | قم بتعيين الخادم لتكرار كافة الرسائل المستلمة. |
--max-frame-size=<bytes> | الحد الأقصى لحجم إطار websocket. |
--origin=<origin> | تأكد من أن العملاء يرسلون رأس الأصل المحدد عند المصافحة. |
--pipein=<path/file> | يقوم بإنشاء أنبوب مسمى (FIFO) للقراءة من المسار/الملف المحدد. |
--pipeout=<path/file> | يقوم بإنشاء أنبوب مسمى (FIFO) يكتب إلى المسار/الملف المحدد. |
--std | تمكين --stdin و --stdout . |
--stdin | أرسل stdin إلى websocket. |
--stdout | إرسال بيانات websocket المستلمة إلى stdout. |
--strict | تحليل الرسائل باستخدام الوضع الصارم. راجع صفحة الرجل لمزيد من التفاصيل. |
--ssl-cert=<cert.crt> | المسار إلى شهادة SSL. |
--ssl-key=<priv.key> | المسار إلى مفتاح SSL الخاص. |
--unix-socket=<addr> | حدد عنوان مأخذ توصيل مجال UNIX لربط الخادم به. |
epoll
و kqueue
مرخص من معهد ماساتشوستس للتكنولوجيا
نرحب بأي مساعدة بشأن gwsocket. الطريقة الأكثر فائدة هي تجربتها وإبداء الرأي. لا تتردد في استخدام أداة تعقب مشكلات Github وسحب الطلبات لمناقشة تغييرات التعليمات البرمجية وإرسالها.
يتمتع!