首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Cpp(十) WebSocket使用

Cpp(十) WebSocket使用

作者头像
Autooooooo
发布2021-02-02 16:50:38
2.6K0
发布2021-02-02 16:50:38
举报
文章被收录于专栏:CoxhuangCoxhuang

文章目录

websocket for C++

#1 环境

C++11
boost 1.58.0
Ubuntu 16.04
cmake 3.18.2 
websocketpp

#1 websocketpp 安装

websocketpp 依赖boost,需要先将boost装好

  1. 下载
git clone https://github.com/zaphoyd/websocketpp.git
  1. 编译安装
cd websocketpp
mkdir build
cd build
cmake ..
make 
sudo make install

安装路径 : /usr/local/include/websocketpp

#2 使用

main.cpp

#include <iostream>
#include <websocketpp/config/asio_no_tls.hpp>
#include <websocketpp/server.hpp>
#include <websocketpp/config/asio_no_tls_client.hpp>
#include <websocketpp/client.hpp>
#include <functional>

typedef websocketpp::server<websocketpp::config::asio> io_server;
typedef websocketpp::client<websocketpp::config::asio_client> io_client;



class WebSocketServer {

public:
    WebSocketServer() {
        server.set_error_channels(websocketpp::log::elevel::all); // log
        server.set_access_channels(websocketpp::log::alevel::all ^ websocketpp::log::alevel::frame_payload);
        server.init_asio(); // asio init
        server.set_message_handler(std::bind( // set on_message
                &WebSocketServer::on_message, this,
                std::placeholders::_1, std::placeholders::_2
        ));
        server.set_open_handler(std::bind( // set on_open
                &WebSocketServer::on_open, this, std::placeholders::_1)
        );
        server.set_close_handler(std::bind( // set on_close
                &WebSocketServer::on_close, this, std::placeholders::_1)
        );
        server.set_fail_handler(std::bind( // set on_fail
                &WebSocketServer::on_fail, this, std::placeholders::_1)
        );

    }

    void on_message(websocketpp::connection_hdl hdl, io_server::message_ptr msg) {
        std::cout << "on_message" << std::endl;
        server.send(hdl, msg->get_payload(), msg->get_opcode()); // 发送消息
    }

    void on_open(websocketpp::connection_hdl hdl) {
        std::cout << "on_open" << std::endl;
    }

    void on_close(websocketpp::connection_hdl hdl) {
        std::cout << "on_close" << std::endl;
    }

    void on_fail(websocketpp::connection_hdl hdl) {
        std::cout << "on_fail" << std::endl;
    }


    void run() {
        server.listen(8888); // 端口 9002
        server.start_accept();
        server.run();
    }

public:
    io_server server;
    io_client client;
};

int main() {
    WebSocketServer app;
    app.run();
    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.17)
project(wsppdemo)

set(CMAKE_CXX_STANDARD 14)

set(BOOST_ROOT "/usr/local/include/boost")
set(BOOSTROOT "/usr/local/include/boost")
include_directories(/usr/local/include)
link_directories(/usr/local/lib)

FIND_PACKAGE(Threads REQUIRED)
SET(Boost_USE_MULTITHREADED ON)

find_package(Boost REQUIRED COMPONENTS system)

add_executable(wsppdemo main.cpp)

target_link_libraries(wsppdemo boost_thread boost_system ${CMAKE_THREAD_LIBS_INIT})
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-12-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • websocket for C++
    • #1 环境
      • #1 websocketpp 安装
        • #2 使用
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档