工程代码地址为:https://download.csdn.net/download/f110300641/10784562

简单的测试:

#include <iostream>
#include <thread>
#include <string>
#include <chrono>

#include "rapidjson/document.h"
#include <rapidjson/writer.h>
#include <rapidjson/stringbuffer.h>
#include <rapidjson/prettywriter.h>

#include "tg_client_mgr.h"

std::string login_json()
{
    rapidjson::Document doc;
    rapidjson::Document::AllocatorType& Allocator = doc.GetAllocator();

rapidjson::Value root( rapidjson::kObjectType );
    rapidjson::Value child( rapidjson::kObjectType );

root.AddMember( "cmd", "login", Allocator );

child.AddMember( "user_name", "COLLECTOR", Allocator );
    child.AddMember( "user_pass", "666666", Allocator );

root.AddMember( "data", child, Allocator );

rapidjson::StringBuffer sb;
    rapidjson::Writer<rapidjson::StringBuffer> writer( sb );
    root.Accept( writer );

return sb.GetString();
}

void callback_fun1(sio::message::ptr const& data)
{
    std::cout << "callback_fun1  ";

if(sio::message::flag_object == data->get_flag())
    {
        auto key_value = data->get_map()["data"];
        if(key_value && sio::message::flag_string == key_value->get_flag())
        {
            std::string strdata = key_value->get_string();
            std::cout << "data=" << strdata.c_str() << std::endl;
        }
    }
}

void test()
{
    std::vector<std::string> uri_list;
    uri_list.push_back( "ws://192.168.0.105:8086" );

std::map<std::string, tg_client::callback_type> msg_fun_map;
    msg_fun_map.insert( std::make_pair( "req_all_data", callback_fun1 ) );

g_client_mgr.build( uri_list, msg_fun_map );

//连接服务器
    if ( !g_client_mgr.connect())
    {
        std::cout << "连接服务器失败" << std::endl;
        return;
    }

//登录
    g_client_mgr.login(login_json());

//通过URI获得某个websocket客户端
    auto pClient = g_client_mgr[ uri_list[0] ];
    if ( pClient)
    {
        std::cout << "uri=" << pClient->get_uri() << std::endl;
    }
}

int main()
{
    test();

while ( true )
    {
        std::this_thread::sleep_for( std::chrono::milliseconds( 100 ) );
    }

return 0;
}

其中sio_socket的git地址为:https://github.com/socketio/socket.io-client-cpp

sio_socket, websocket的使用与封装相关推荐

  1. 充分利用 cpu_如何充分利用云

    充分利用 cpu Over the years, building and testing software that runs on physical servers has become the ...

  2. websocket的封装和使用

    websocket概念: 因为 HTTP 协议有一个缺陷:通信只能由客户端发起.务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种. 封装: ...

  3. HTML5 WebSocket之HelloWorld

    原文http://fallenlord.blogbus.com/logs/110768932.html 方案 要实现一个WebSocket有很多方案,客户端方面可以用原生的WebSocket对象,也可 ...

  4. 基于WebSocket协议的iOS端即时聊天

    好好好久没有在cnblogs上写博客,不过在这里写的最早的一篇博客的时间戳,真是时间久远啊,那时候还没毕业.不在cnblogs的期间,在github pages.简书上写过博客,github page ...

  5. htmlcss实例小项目_小程序websocket心跳库——websocket-heartbeat-miniprogram

    前言 在16年的时候因为项目接触到websocket,而后对心跳重连做了一次总结,写了篇博客,而后18年对之前github上的demo代码进行了再次开发和开源,最终封装成库.如下: 博客:https: ...

  6. 浅淡 RxJS WebSocket

    引言 中后台仪表盘是一个非常复杂,特别是当需要全面屏运用时,数据的实时性需求非常高.WebSocket 不管在什么环境中使用其实都是非常简单,各现代浏览器实现标准都很统一,而且接口也足够简单. 即便是 ...

  7. 补习系列(20)-大话 WebSocket 与 尬聊的实现

    目录 一.聊聊 WebSocket 二.Stomp 是个什么鬼 三.SpringBoot 整合 WebSocket A. 引入依赖 B. WebSocket 配置 C. 控制器 D. 前端实现 四.参 ...

  8. 009 - CSS预处理器less sass SAML SSO 单点登录 websocket socket.io

    009_css预处理器less sass saml sso 单点登录 websocket## less 安装: npm install -g less 命令: lessc style.less sty ...

  9. 【Node.js】论一个低配版Web实时通信库是如何实现的1( WebSocket篇)

    引论 simple-socket是我写的一个"低配版"的Web实时通信工具(相对于Socket.io),在参考了相关源码和资料的基础上,实现了前后端实时互通的基本功能 选用了Web ...

最新文章

  1. jquery操作select取值赋值与设置选中[转]
  2. 一起谈.NET技术,Visual Studio 2010 中的代码约定设置
  3. Ajax+Node.js前后端交互最佳入门实践(05)
  4. ArcGIS License Manager 相关总结
  5. Android系统中的进程管理:内存的回收
  6. 轻松精通数据库管理之道——运维巡检之四(数据库备份)
  7. SAP License:合理的机制才能让系统效率最大
  8. 【李宏毅2020 ML/DL】P26-33 Explainable ML
  9. linux编译后 空间不足,Linux系统/run/systemd空间不足问题解决
  10. cortex系列处理器排行_vivoX60系列即将首发5nm Exynos 1080芯片
  11. 【Docker】 命令速查
  12. iOS 整理iOS9适配中出现的坑
  13. Word表格之VBA知识
  14. 清华大学计算机直硕生,推免数据 | 清华大学计算机系三大巨变——直硕生减半,本校增多,211增多...
  15. 法大大“实槌”获评《互联网周刊》“2019年度特别创新TOP50”
  16. 「首席架构师推荐」数值分析软件列表
  17. 插件:Could not find library corresponding to plugin……
  18. 什么叫UG编程?UG编程是干什么的?
  19. 使用flash id不拆盘查看SSD颗粒
  20. PreferenceFragment的简单使用

热门文章

  1. React Tutorial (updating)
  2. spug上线服务踩坑记
  3. Mac 终端打开jupyter notebook,用这句话就对了
  4. 论文阅读《Knowledge Collaborative Fine-tuning for Low-resource Knowledge GraphCompletion》
  5. C++多态的原理(虚函数指针和虚函数表)
  6. vs.net发送邮件(2.0)
  7. Vuex-状态管理(24)
  8. java 第三方登录之QQ登录
  9. hana 服务器性能测试,SAP HANA
  10. Java 中的 T,E,K,V, 别傻傻分不清楚!