使用websocketpp编写websocket的服务端程序

       webscoketpp是一个基于boost库的websocket实现,实现的相对完善一些。主页地址:http://www.zaphoyd.com/websocketpp。

       因为做项目需要用到,所以简单做了下分析,下面是关于如何编写server的介绍:

       1. 自定义一个server_handler类,继承自websocketpp::server::handler(简称ws_hander);

             1. ws_handler是在endpoint_tarits中定义的一个类

1                  class handler: public role_type::handler_interface,
2                  public socket_type::handler_interface

                其中虚函数有:

 1                 virtual void validate(connection_ptr con) {}
 2 
 3                 virtual void on_open(connection_ptr con) {}
 4 
 5                 virtual void on_close(connection_ptr con) {}
 6 
 7                 virtual void on_fail(connection_ptr con) {}
 8 
 9                 virtual void on_message(connection_ptr con,message::data_ptr) {}
10 
11                 virtual bool on_ping(connection_ptr con,std::string) {return true;}
12 
13                 virtual void on_pong(connection_ptr con,std::string) {}
14 
15                 virtual void on_pong_timeout(connection_ptr con,std::string) {}
16 
17                 virtual void http(connection_ptr con) {}

 

             可以在server_handler中重写这些函数,处理相应的逻辑。

       2. hander_ptr = new server_hander();

       3. 声明一个websocketpp::server的对象test_server,以handler_ptr为参数;

              1. websocketpp::server 是endpoint<websocketpp::role::server, websocketpp::socket::plain>的重定义

              2. 开放接口有:

 1    handler_ptr get_handler();
 2      void set_handler(handler_ptr new_handler);
 3      size_t get_threshold();
 4      void set_threshold();
 5      void close_all(close::status::value code = close::status::GOING_AWAY, const std::string& reason = "");
 6      void stop(bool clean = true, close::status::value code = close::status::GOING_AWAY, const std::string& reason = "");

                继承自role::server的:

1                     void listen(uint16_t port, size_t n = 1);
2 
3                     void listen(const boost::asio::ip::tcp::endpoint& e, size_t num_threads = 1);
4 
5                     void listen(const std::string &host, const std::string &service, size_t n = 1);
6 
7                     void listen(const InternetProtocol &internet_protocol, uint16_t port, size_t n = 1);

       4. 启动监听: test_server.listen(port_n);

转载于:https://www.cnblogs.com/sherwin-security/archive/2012/04/11/2443167.html

自己开发简单web服务器一(C++开源库websocketpp实现) 简要 Websocketpp,开源跨平台web库,网络请求使用boost::asio实现(Windows上是IOCP完成端口)。具体介绍可见以前的一篇说明:http://blog.csdn.net/mfcing/article/details/50118591。 Web服务器主要处理客户端的http请求(GET\POST),这里主要介绍页面请求、文件请求等基本的功能。 基本配置 设置工作线 阅读详情

相关推荐

WebSocket协议

WebSocket本身是基于TCP协议的,它将 TCP 的 Socket(套接字)应用在了web page上,从而使通信双方建立起一个保持在活动状态连接通道,并且属于全双工(双方同时进行双向通信)。 原理: 它是先借用 HTTP协议 的 101 switch protocol 来达到协议转换的,从HTTP协议切换成WebSocket通信协议。 特点: 1.服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技...

qq_41924435的博客 1312

websocketpp/websocket++库教程/服务端代码封装

websocketpp这个库是开源的,我在项目中引用,感觉还是把代码开源出来给需要的人比较好。我自己对这个库进行了简单的封装,可以做出动态库或者so库,使用起来也方便。我只提供封装后的代码,至于websocket库的编译和项目配置需要自己去做。 web_sock_server.h头文件 #pragma once #include "pch.h" #include <string> #include <boost/thread.hpp> #include <boost/fu

hacker_lpy的博客 5949

C++】开源:websocketpp安装与使用

websocketpp学习

DevFrank的博客 4421

C++类头文件不暴露私有变量的一种写法

在类的头文件中不暴露私有变量,目的一般有两个: 1. 提供给别人的dll对应的头文件中,不希望在头文件中暴露私有变量的名称; 2. 因为私有变量的类型需要包含另一个头文件,所以不希望在头文件中包含其它头文件; 一般可以用下面的方法来隐藏私有变量。 TWebSocketServer.h class TWebSocketServer { public: TWebSocketS...

CoderAldrich的专栏 1583

C++ - 使用Websocket++编写客户端连接WebSocket服务器并进行通信

文章目录 1 库依赖 2 根据官方示例代码修改封装的WebsocketClient类 2.1 WebsocketClient代码 2.2 WebsocketClient类使用代码 3 Websocket++官方编写客户端示例教程 4 与Websocket++官方示例客户端的不同 1 库依赖 Websocket++/Websocketpp依赖于boost(使用boost 1.74),Websocket++ 0.8.2版本,因为暂时没有使用wss,所以没有集成Openssl。 2 根据官方示例代码修改封.

翻肚鱼儿的博客 2762

WebSocketpp

WebSocket是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得 CS 之间的数据交换变得更加简单,允许 S 主动向 C 推送数据。WebSocket 和 HTTP 一样都是应用层的一种协议,可以使用各种编程语言实现之。WebSocketpp 是一个仅仅由头文件构成的 C++库,它实现了 WebSocket 协议(rfc 6455),可以在项目中方便简洁地实现客户端和服务器。WebSocketpp 底层使用C++ 的 iostream 库和基于 Boo

fdsafwagdagadg6576的专栏 3257

使用websocketpp实现websocket服务端

简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 使用 websocketpp,依赖boost库,安装boost yum

业余玩家 1807

C++ 网络通信实践:cpp-httplib 与 websocketpp 入门指南,轻松实现 HTTP 与 WebSocket 交互

本文介绍 cpp - httplib 和 websocketpp 两个 C++ 库。前者轻量易用,支持 HTTP/HTTPS 客户端和服务端,适用于多种场景;后者遵循 RFC 6455,实现 WebSocket 全双工通信,帮助实现实时应用开发。

羑悻的博客. 3万+

websocketpp 全面使用教程:C++ WebSocket 开发核心

WebSocket协议解决了HTTP短连接单向通信的痛点,实现了客户端与服务端的全双工长连接通信。该协议通过一次HTTP升级握手建立TCP长连接,之后双方可自由收发消息,无需重复建立连接。WebSocket++是一个基于C++11的跨平台WebSocket库,支持服务端/客户端双模式,内置异步I/O、心跳检测、TLS加密等功能。开发者只需定义回调函数处理连接事件和消息收发,无需关心底层协议细节,即可快速实现实时通信功能。该库兼容RFC6455标准,能与浏览器、移动端及其他语言的后端无缝互通,是开发即时通讯、

Small_entreprene的博客 1666

websocketpp使用:快速搭建一个websocket服务端

在需要实时更新数据的场景下,如在线聊天、实时股票行情显示等,客户端为了获取最新信息,不得不频繁地向服务器发送请求,这种方式会造成大量不必要的网络流量和服务器负载,同时也无法保证数据的实时性。常见的操作码包括 0x0(延续帧)、0x1(文本帧)、0x2(二进制帧)、0x8(关闭帧)、0x9(Ping 帧)和 0xA(Pong 帧)。服务器收到客户端的升级请求后,如果同意升级,会返回一个状态码为 101 的响应,并包含相应的报头信息。客户端发送的帧必须进行掩码处理,服务器发送的帧不能进行掩码处理。

W2155的博客 1275

websocketpp使用

本篇文章是对Websocketpp基本使用的讲解,希望在日常开发中帮助到大家和本人。

Yu_Lijing的博客 953

c++中间件】WebSocket介绍 && WebSocketpp库的使用

WebSocket是一种支持双向通信的HTML5协议,通过HTTP升级实现,解决了传统HTTP轮询的实时性问题。其特点包括轻量数据格式、跨域通信、支持文本和二进制传输等。WebSocketpp是一个跨平台C++库,实现了WebSocket协议,提供事件驱动接口和灵活依赖管理,适用于构建HTTP/WebSocket服务器。安装方法简单,使用apt-get安装相关依赖即可验证是否成功。该库支持多种网络协议和平台,适合开发实时通信应用。

lirendada的博客 1669

websocketpp c++客户端

利用websocketpp编写websocket客户端程序。 一、阻塞方式实例 #include "stdafx.h" #include <websocketpp/config/asio_no_tls_client.hpp> #include <websocketpp/client.hpp> #include <iostream> typed...

老衲不出家 3606

基于websocketpp库的websocket服务器例程

使用websocketpp,需要安装boost。 解压 boost_1_73_0.tar.gz tar -zvfx boost_1_73_0.tar.gz 运行bootstrap.sh后,生成b2,直接运行b2;如果需要移植到ARM平台,则需要在project-config.jam文件将using gcc修改如下: using gcc : : arm-linux-gnueabihf-gcc; 生成的库文件在stage目录中。 下面是websocket服务器例程,该服务器功能用于推送数据到客户

small_process的博客 1402

websocketpp的流媒体微服务使用安全

websocketpp websocketpp不失为一个具有良好设计的websocket的好使用的lib。我们在使用媒体服务的过程中,可以使用websocketpp制作微服务,提供tcp stream流服务长链接系统,最大的两个问题1 是记录客户端数据,2 是安全问题。这里使用websocket的原因是提供流媒体服务。 鉴权安全性:   first, 客户端需要像鉴权服务器使用用户名和密码   second,客户端必须发送授信flag标识,flag标识为硬件标识,客户

qianbo042311的博客 924

c++开源消息服务器,c++ websocketpp库实现websocket服务端和客户端消息推送

websocketpp介绍websocketpp是一个只有头文件的支持websocket协议的C++开源库,支持websocket客户端和服务器功能,网络传输模块基于boost::asio提供 server 功能的 websocketpp::server 和提供 client 功能的 websocketpp:client 都继承自基类 websocketpp::endpoint , endpoin...

weixin_33467061的博客 3117

webSocket server 跟http包一起使用方法

webSocket server 跟http包一起使用方法 最近在捣鼓一个小工具需要用到http+websocket,就去百度了下发现网上大部分教程都是用的github.com/gorilla/websocket这个包作为实例。之前记得x/net下面是有一个websocket包的.想着官方的东西解耦可能更好点,就再网上搜了下但是关于这个包的实例很少。既然这样那就看下这个包下有没有example(...

a99361481的博客 3136

实现一个 WebSocket 服务器 - 实践指南

WebSocket 是一种在客户端和服务器之间建立持久连接的通信协议,它允许双向通信,使得服务器能够主动向客户端推送数据。你可以使用 WebSocket 客户端与服务器进行通信,并在服务器的控制台上查看打印的消息。方法,在收到 GET 请求时判断是否是 WebSocket 的握手请求,如果是,则将请求交给 WebSocket 处理器处理,否则继续由。方法,在收到 GET 请求时判断是否是 WebSocket 的握手请求,如果是,则将请求交给 WebSocket 处理器处理,否则继续由。

YbeCoder的博客 195
下一篇: VirtualBox安装centOS6.2
adsd1218
博客等级 码龄11年 0粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值