Cpp(十) WebSocket使用

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})

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值