(لاحظ من المطور الرئيسي ، للأسف ليس لدي الكثير من الوقت لأكرس هذه المكتبة بعد الآن ، ربما حان الوقت لتمرير الصيانة إلى شخص آخر أكثر تحمسًا؟)
IxWebSocket هي مكتبة C ++ لتطوير عميل WebSocket والخادم. إنه يحتوي على الحد الأدنى من التبعيات (بدون زيادة) ، وهو سهل الاستخدام ودعم كل ما ستحتاجه على الأرجح لـ WebSocket Dev (SSL ، وضغط المنافذ ، والتجميع على معظم المنصات ، إلخ ...). يتوفر أيضًا رمز العميل ورمز الخادم HTTP ، لكنه لم يتلق الكثير من الاختبارات.
تم استخدامه على عناوين ألعاب الفيديو المحمولة الكبيرة التي ترسل واستلام الكثير من الرسائل منذ عام 2017 (iOS و Android). تم اختباره على MacOS و IOS و Linux و Android و Windows و FreeBSD. هدفين تصميم مهمان هما البساطة والصحة.
/*
* main.cpp
* Author: Benjamin Sergeant
* Copyright (c) 2020 Machine Zone, Inc. All rights reserved.
*
* Super simple standalone example. See ws folder, unittest and doc/usage.md for more.
*
* On macOS
* $ mkdir -p build ; (cd build ; cmake -DUSE_TLS=1 .. ; make -j ; make install)
* $ clang++ --std=c++11 --stdlib=libc++ main.cpp -lixwebsocket -lz -framework Security -framework Foundation
* $ ./a.out
*
* Or use cmake -DBUILD_DEMO=ON option for other platforms
*/
# include < ixwebsocket/IXNetSystem.h >
# include < ixwebsocket/IXWebSocket.h >
# include < ixwebsocket/IXUserAgent.h >
# include < iostream >
int main ()
{
// Required on Windows
ix::initNetSystem ();
// Our websocket object
ix::WebSocket webSocket;
// Connect to a server with encryption
// See https://machinezone.github.io/IXWebSocket/usage/#tls-support-and-configuration
// https://github.com/machinezone/IXWebSocket/issues/386#issuecomment-1105235227 (self signed certificates)
std::string url ( " wss://echo.websocket.org " );
webSocket. setUrl (url);
std::cout << " Connecting to " << url << " ... " << std::endl;
// Setup a callback to be fired (in a background thread, watch out for race conditions !)
// when a message or an event (open, close, error) is received
webSocket. setOnMessageCallback ([]( const ix::WebSocketMessagePtr& msg)
{
if (msg-> type == ix::WebSocketMessageType::Message)
{
std::cout << " received message: " << msg-> str << std::endl;
std::cout << " > " << std::flush;
}
else if (msg-> type == ix::WebSocketMessageType::Open)
{
std::cout << " Connection established " << std::endl;
std::cout << " > " << std::flush;
}
else if (msg-> type == ix::WebSocketMessageType::Error)
{
// Maybe SSL is not configured properly
std::cout << " Connection error: " << msg-> errorInfo . reason << std::endl;
std::cout << " > " << std::flush;
}
}
);
// Now that our callback is setup, we can start our background thread and receive messages
webSocket. start ();
// Send a message to the server (default to TEXT mode)
webSocket. send ( " hello world " );
// Display a prompt
std::cout << " > " << std::flush;
std::string text;
// Read text from the console and send messages in text mode.
// Exit with Ctrl-D on Unix or Ctrl-Z on Windows.
while ( std::getline (std::cin, text))
{
webSocket. send (text);
std::cout << " > " << std::flush;
}
return 0 ;
}مهتم؟ اذهب اقرأ المستندات! إذا كانت الأمور لا تعمل كما هو متوقع ، فيرجى إنشاء مشكلة على GitHub ، أو حتى طلب سحب أفضل إذا كنت تعرف كيفية إصلاح مشكلتك.
يتم تطوير IxWebSocket بنشاط ، تحقق من changelog لمعرفة ما هو الطبخ. إذا كنت تبحث عن خدمة مراسلة في الوقت الفعلي (سيتحدث "خادم" شبيه بالدردشة إلى رمز WebSocket الخاص بك) مع العديد من الميزات مثل التاريخ ، المدعومة من Redis ، انظر إلى Cobra.
رمز عميل IxWebSocket متوافق مع Autobahn بدءًا من الإصدار 6.0.0. انظر نتائج الاختبار الحالية. لا تزال بعض الاختبارات تفشل في رمز الخادم.
بدءًا من الإصدار 11.0.8 ، يجب أن يكون IxWebSocket بالكامل متوافقًا مع C ++ 11.
إذا كانت شركتك أو مشروعك تستخدم هذه المكتبة ، فلا تتردد في فتح مشكلة أو العلاقات العامة لتعديل هذه القائمة.
هناك الكثير من مكتبات WebSocket الرائعة الموجودة هناك ، والتي قد تعمل من أجلك. هنا زوجان جادان.
UVWEB هي مكتبة كتبها مؤلف IxWebSocket والتي تم تصميمها على رأس UVW ، وهي عبارة عن مجموعة C ++ لـ Libuv. إنه يحتوي على المزيد من التبعيات ولا يدعم SSL في هذه المرحلة ، ولكن يمكن استخدامه لفتح اتصالات متعددة ضمن مؤشر ترابط OS واحد بفضل libuv.
للتحقق من أداء مكتبة WebSocket ، يمكنك إلقاء نظرة على مشروع Autoroute.
| نظام التشغيل | TLS | المطهر | حالة |
|---|---|---|---|
| Linux | OpenSSL | لا أحد | |
| ماكوس | النقل الآمن | مرأى المطهر | |
| ماكوس | OpenSSL | مرأى المطهر | |
| ماكوس | mbedtls | مرأى المطهر | |
| النوافذ | عاجز | لا أحد | |
| UWP | عاجز | لا أحد | |
| Linux | OpenSSL | عنوان المطهر |