使用websocketpp實現websocket服務端

簡介

WebSocket是一種在單個TCP連接上進行全雙工通信的協議。WebSocket通信協議於2011年被IETF定為標準RFC 6455,並由RFC7936補充規範。WebSocket API也被W3C定為標準。

WebSocket使得客戶端和服務器之間的數據交換變得更加簡單,允許服務端主動向客戶端推送數據。在WebSocket API中,瀏覽器和服務器只需要完成一次握手,兩者之間就直接可以創建持久性的連接,並進行雙向數據傳輸。

使用

websocketpp,依賴boost庫,安裝boost

<code>yum install boost 
yum install boost-devel/<code>

安裝websocketpp

地址: https://github.com/zaphoyd/websocketpp

<code>mv websocketpp /usr/include/<code>

編寫程序websocket.cpp

<code>#include 
#include 
#include 

using namespace std;

typedef websocketpp::server websocketsvr;
typedef websocketsvr::message_ptr message_ptr;

using websocketpp::lib::placeholders::_1;
using websocketpp::lib::placeholders::_2;
using websocketpp::lib::bind;

void OnOpen(websocketsvr *server,websocketpp::connection_hdl hdl){
    cout<send>get_payload(), websocketpp::frame::opcode::text);
}

int main(){
    websocketsvr server;
    server.set_access_channels(websocketpp::log::alevel::all);
    server.clear_access_channels(websocketpp::log::alevel::frame_payload);
    server.init_asio();
    // Register our open handler
    server.set_open_handler(bind(&OnOpen, &server, ::_1));
    // Register our close handler
    server.set_close_handler(bind(&OnClose, &server, _1));
    server.set_message_handler(bind(&OnMessage,&server,_1,_2));
    server.listen(7999);
    server.start_accept();
    server.run();
}
/<send>/<code>

編譯程序g++ websocket.cpp -o websocket -lboost_system -std=c++11 -g

websocket在線測試

http://www.websocket-test.com/

https://baike.baidu.com/item/WebSocket/1953845


分享到:


相關文章: