(หมายเหตุจากนักพัฒนาหลักน่าเศร้าที่ฉันไม่มีเวลามากเกินไปที่จะอุทิศให้กับห้องสมุดนี้อีกต่อไปอาจถึงเวลาที่จะผ่านการบำรุงรักษาให้คนอื่นมีแรงจูงใจมากขึ้น?)
IXWebSocket เป็นไลบรารี C ++ สำหรับการพัฒนาไคลเอนต์ WebSocket และการพัฒนาเซิร์ฟเวอร์ มันมีการพึ่งพาน้อยที่สุด (ไม่มีการเพิ่ม) ใช้งานง่ายมากและสนับสนุนทุกสิ่งที่คุณต้องการสำหรับ WebSocket dev (SSL, การบีบอัด deflate, รวบรวมบนแพลตฟอร์มส่วนใหญ่ ฯลฯ ... ) ไคลเอนต์ HTTP และรหัสเซิร์ฟเวอร์ก็พร้อมใช้งาน แต่ก็ไม่ได้รับการทดสอบมากนัก
มันถูกใช้ในเกมวิดีโอเกมมือถือขนาดใหญ่ที่ส่งและรับข้อความมากมายตั้งแต่ปี 2560 (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 ซึ่งเป็น wrapper C ++ สำหรับ libuv มันมีการพึ่งพามากขึ้นและไม่รองรับ SSL ณ จุดนี้ แต่สามารถใช้เพื่อเปิดการเชื่อมต่อหลายครั้งภายในเธรดระบบปฏิบัติการเดียวด้วย libuv
ในการตรวจสอบประสิทธิภาพของไลบรารี WebSocket คุณสามารถดูโครงการ Autoroute
| ระบบปฏิบัติการ | TLS | ผู้ฆ่าเชื้อ | สถานะ |
|---|---|---|---|
| ลินเวกซ์ | openssl | ไม่มี | |
| แม็กอส | การขนส่งที่ปลอดภัย | เกลียวเกลียว | |
| แม็กอส | openssl | เกลียวเกลียว | |
| แม็กอส | Mbedtls | เกลียวเกลียว | |
| หน้าต่าง | พิการ | ไม่มี | |
| UWP | พิการ | ไม่มี | |
| ลินเวกซ์ | openssl | พูดถึงเจนิทเซอร์ |