预定义

1 WEBSOCKETPP_CPP11_TYPE_TRAITS
2 ASIO_STANDALONE;
3 SCL_SECURE_NO_WARNINGS;
A 不要使用太新的版本
B 不使用boost 就把ASIO_STANDALONE 预定义加上,使用boost库毕竟比较庞大。

set_access_channels 函数定义输出的日志,输出日志太多效率就低了,这个一定要知道。

#define _SCL_SECURE_NO_WARNINGS
#define WEBSOCKETPP_CPP11_TYPE_TRAITS

code 1

#define _SCL_SECURE_NO_WARNINGS
#define _WEBSOCKETPP_CPP11_TYPE_TRAITS_
#define  ASIO_STANDALONE
#include <websocketpp/config/core.hpp>
#include <websocketpp/server.hpp>
#include <iostream>
#include <fstream>#if 1
typedef websocketpp::server<websocketpp::config::core> server;using websocketpp::lib::placeholders::_1;
using websocketpp::lib::placeholders::_2;
using websocketpp::lib::bind;// pull out the type of messages sent by our config
typedef server::message_ptr message_ptr;// Define a callback to handle incoming messages
void on_message(server* s, websocketpp::connection_hdl hdl, message_ptr msg) {if (msg->get_opcode() == websocketpp::frame::opcode::text) {s->get_alog().write(websocketpp::log::alevel::app,"Text Message Received: " + msg->get_payload());}else {s->get_alog().write(websocketpp::log::alevel::app,"Binary Message Received: " + websocketpp::utility::to_hex(msg->get_payload()));}try {s->send(hdl, msg->get_payload(), msg->get_opcode());}catch (websocketpp::exception const & e) {s->get_alog().write(websocketpp::log::alevel::app,std::string("Echo Failed: ") + e.what());}
}int main() {server s;std::ofstream log;try {// set up access channels to only log interesting thingss.clear_access_channels(websocketpp::log::alevel::all);s.set_access_channels(websocketpp::log::alevel::connect);s.set_access_channels(websocketpp::log::alevel::disconnect);s.set_access_channels(websocketpp::log::alevel::app);// Log to a file rather than stdout, as we are using stdout for real// outputlog.open("output.log");s.get_alog().set_ostream(&log);s.get_elog().set_ostream(&log);// print all output to stdouts.register_ostream(&std::cout);// Register our message handlers.set_message_handler(bind(&on_message, &s, ::_1, ::_2));server::connection_ptr con = s.get_connection();con->start();// C++ iostream's don't support the idea of asynchronous i/o. As such// there are two input strategies demonstrated here. Buffered I/O will// read from stdin in chunks until EOF. This works very well for// replaying canned connections as would be done in automated testing.//// If the server is being used live however, assuming input is being// piped from elsewhere in realtime, this strategy will result in small// messages being buffered forever. The non-buffered strategy below// reads characters from stdin one at a time. This is inefficient and// for more serious uses should be replaced with a platform specific// asyncronous i/o technique like select, poll, IOCP, etcbool buffered_io = false;if (buffered_io) {std::cin >> *con;con->eof();}else {char a;while (std::cin.get(a)) {con->read_some(&a, 1);}con->eof();}}catch (websocketpp::exception const & e) {std::cout << e.what() << std::endl;}log.close();
}#endif

code 2

#if 1
#include <set>
#include <websocketpp/config/asio_no_tls.hpp>
#include <websocketpp/server.hpp>typedef websocketpp::server<websocketpp::config::asio> server;using websocketpp::connection_hdl;
using websocketpp::lib::placeholders::_1;
using websocketpp::lib::placeholders::_2;
using websocketpp::lib::bind;class broadcast_server {public:broadcast_server() {m_server.init_asio();m_server.set_open_handler(bind(&broadcast_server::on_open, this, ::_1));m_server.set_close_handler(bind(&broadcast_server::on_close, this, ::_1));m_server.set_message_handler(bind(&broadcast_server::on_message, this, ::_1, ::_2));}void on_open(connection_hdl hdl) {m_connections.insert(hdl);}void on_close(connection_hdl hdl) {m_connections.erase(hdl);}void on_message(connection_hdl hdl, server::message_ptr msg) {for (auto it : m_connections) {m_server.send(it, msg);}}void run(uint16_t port) {m_server.listen(port);m_server.start_accept();m_server.run();}
private:typedef std::set<connection_hdl, std::owner_less<connection_hdl>> con_list;server m_server;con_list m_connections;
};int main() {broadcast_server server;std::cout << "server running on 9002" << std::endl;server.run(9002);}
#endif

websocketpp最简单的服务器相关推荐

  1. nodejs php web,nodejs实现的简单web服务器功能示例

    本文实例讲述了nodejs实现的简单web服务器功能.分享给大家供大家参考,具体如下: 前端js代码: $.ajax({ url:'http://192.168.0.114:3000',//服务器地址 ...

  2. 使用Netty实现的一个简单HTTP服务器

    为什么80%的码农都做不了架构师?>>>    使用Netty实现的一个简单HTTP服务器 1.HttpServer,Http服务启动类,用于初始化各种线程和通道 public cl ...

  3. 简单回声服务器的实现

    文章目录 1 简单回声服务器的实现 1 简单回声服务器的实现 实现非常非常简单,而且没啥实用价值,代码如下: server.c: #include <stdio.h> #include & ...

  4. shell编程服务器维护,简单监测服务器的shell脚本

    搜索热词 1.编写shell脚本如下: #!/bin/bash # chkconfig: 2345 10 90 # description:监测linux服务器cpu.内存.磁盘 #cpu平均负载阀值 ...

  5. php运行socket服务器,PHP_php简单socket服务器客户端代码实例,本篇文章分享一个简单的socket - phpStudy...

    php简单socket服务器客户端代码实例 本篇文章分享一个简单的socket示例,用php.实现一个接收输入字符串,处理并返回这个字符串到客户端的TCP服务. 产生一个 socket 服务端 /*文 ...

  6. 使用Socket及ServerSocket创建简单的服务器

    使用Socket及ServerSocket创建简单的服务器 @(JAVA)[java] 参考自core java package com.lujinhong.corejava;import java. ...

  7. 轻松创建nodejs服务器(1):一个简单nodejs服务器例子

    这篇文章主要介绍了一个简单nodejs服务器例子,本文实现了一个简单的hello world例子,并展示如何运行这个服务器,需要的朋友可以参考下 我们先来实现一个简单的例子,hello world. ...

  8. Socket网络编程--简单Web服务器(6)

    本来是想实现ssl连接的,但是弄了好久都不成功,就索性不做了,等以后有能力再做了.所以这一小节就是本次的最后一节了.就简单的说几个注意点. 1.加个配置文件 使用单例模式,使用一个类,该类保存一些信息 ...

  9. 一、node.js搭建最简单的服务器

    node.js搭建最简单的服务器 代码演示: // 1. 加载http核心模块 var http = require('http')// 2. 使用http.createServer()方法创建一个W ...

最新文章

  1. ABAP 使用DYNP_VALUES_READ来获取屏幕字段值
  2. Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之14.Servlet请求头信息
  3. IOS UITextView自适应高度
  4. python通信原理_用python通过原始套接字发送scapy包
  5. DPDK性能优化技术汇总
  6. Linux下安装Java环境
  7. snm算法_基于SNM算法的大数据量中文地址清洗方法
  8. 从三个方面理解ARM嵌入式系统
  9. vue邮箱验证正则表达式错误:Unterminated regular expression
  10. 【转】Photoshop 用户名.组织或序列号丢失或无效.应用程序无法继续.
  11. 怎么跟微信防封_最近微信域名防封的一些心得和经验,怎么才能做到域名防封
  12. 手把手做一个JSP入门程序(二):创建一个项目(JSP)
  13. 人脸识别SVM算法实现--参考麦子学院彭亮机器学习基础5.2
  14. R_Studio(学生成绩)对数据缺失值md.pattern()、异常值分析(箱线图)
  15. 华东理工大学2022计算机考研,2022社会学考研经验贴
  16. Excel速度问题探讨.
  17. Linux 解压zip命令
  18. 课得软件丨成都web前端培训班哪儿好?
  19. 港府拟申拨175亿港元进行西九文化区综合地库余下工程
  20. 希尔排序(动图+详解)

热门文章

  1. 198. house robber 题解
  2. 谁说我们没有美国富---中国公款消费一年X掉9个航母战斗群
  3. 20年来从不涨价,这个地方用1块钱的打火机,垄断了全球70%的市场
  4. 小电科技开启裁员,涉及多个部门一律劝退?回应:消息不属实
  5. 京东将回购计划授权增至30亿美元并延期至2024年
  6. “大胃王”吃播注意了 国家明确禁止发布量大多吃、暴饮暴食等节目
  7. 长城汽车旗下品牌“欧拉好猫”涉嫌虚假宣传 曾召回部分欧拉汽车
  8. iPhone 13 Pro系列被抢疯:官网已推迟36天发货
  9. 特斯拉全自动驾驶订阅包来了:199美元包月 老用户99美元
  10. 天猫好房和易居,1+1=1?