精华内容
下载资源
问答
  • 参考网址: uWebSockets项目地址:https://github.com/uNetworking/uWebSockets ...1、编译和使用uWebSockets的环境为win10,vs2017 专业版,所有的依赖库都是32位debug版本的,Linux上未尝试 2、...

    参考网址:

    uWebSockets项目地址:https://github.com/uNetworking/uWebSockets

    uSockets项目地址:https://github.com/uNetworking/uSockets

    一、摘要:

    1、编译和使用uWebSockets的环境为win10,vs2017 专业版,所有的依赖库都是32位debug版本的,Linux上未尝试

    2、uWebSockets编译所需依赖库为:

    <1> libuv:请参考我之前的博文,将此库编译为静态库:https://blog.csdn.net/wangdamingll/article/details/101619464

    <2> uSockets:请参考我之前的博文,将此库编译为静态库:https://blog.csdn.net/wangdamingll/article/details/102571887

    <3> zlib:这里不做如何编译成库,官网网址:http://zlib.net/ 

    二、构建vs2017工程

    因为uWebSockets除uSocekts之外,是使用C++17标准的头文件构建的,不需要编译,直接包含uWebSockets项目地址下的src头文件即可。

    一下是我的common库文件结构:

    common包含4个文件夹:

    libuv: 包含libuv库的头文件和静态库

    uSockets:包含uSocekts的头文件和静态库

    zlib:包含zlib的头文件和静态库

    uWebSockets:直接包含uWebSockets项目地址下的src下的所有文件

    1、新建vs2017空项目

    <1>项目设置


    1)VC++ 目录->包含目录, 将common所有文件夹中的头文件包含进来

    2)VC++ 目录->库目录, 将common所有文件夹的静态库路径包含进来

    3)C/C++ ->预处理器,添加UWS_NO_ZLIB,去除zlib功能,我这里将zlib的静态库接入工程始终不成功,所以直接禁用zlib功能

    4)C/C++ ->语言,符合模式改为否,否则编译报错

    5)C/C++ ->语言,C++ 语言标准改为 ISO C++17 标准 (/std:c++17)

    6)链接器 ->输入->附加依赖项,添加 zlib.lib
    libuv.lib
    uSockets_32.lib
    userenv.lib
    Iphlpapi.lib
    psapi.lib

    7)链接器 ->输入->忽略特定默认库,添加 LIBCMTD

    <2> 在项目中添加源文件


    1)右击头文件->添加现有项,将common库下uWebSockets下的所有文件添加进工程中

    2)右击源文件->添加现有项,将uWebSockets项目地址下examples下的EchoServer.cpp添加进工程中

    <3>编译工程

    你没有看错哦,有错误,如果你没有这个错误,那么非常恭喜你。至少我这里是不成功的。这个问题我查了很久,从uWebSockets项目地址下的issue中发现了蛛丝马迹。所以我在这里也只能猜测(毕竟官方的例子别人都能运行):

    uWS::App().ws<PerSocketData>("/*", {.....})

    这里{.....}中的内容应该是C++17标准中的语法,是给App.h中此结构体成员变量赋值的:

        struct WebSocketBehavior {
            CompressOptions compression = DISABLED;
            int maxPayloadLength = 16 * 1024;
            int idleTimeout = 120;
            int maxBackpressure = 1 * 1024 * 1204;
            fu2::unique_function<void(uWS::WebSocket<SSL, true> *, HttpRequest *)> open = nullptr;
            fu2::unique_function<void(uWS::WebSocket<SSL, true> *, std::string_view, uWS::OpCode)> message = nullptr;
            fu2::unique_function<void(uWS::WebSocket<SSL, true> *)> drain = nullptr;
            fu2::unique_function<void(uWS::WebSocket<SSL, true> *)> ping = nullptr;
            fu2::unique_function<void(uWS::WebSocket<SSL, true> *)> pong = nullptr;
            fu2::unique_function<void(uWS::WebSocket<SSL, true> *, int, std::string_view)> close = nullptr;
        };

    然而非常抱歉的是,我这vs 2017专业版对此语法并不支持,虽然我vs 2017语言标准选择的是C++ 17标准。

     

    <4>修改源码改变上述赋值方式

    在这里我只修改了App.h中的部分源码:

    原来命名空间下增加WebSocketBehavior模板,并将struct TemplatedApp {...}类下WebSocketBehavior注释掉,

    接着修改struct TemplatedApp {...}类下ws的第二个参数,源码修改完成. 以下为示例:

    namespace uWS {

    ...

    template <bool SSL>
    struct WebSocketBehavior {
        CompressOptions compression = DISABLED;
        int maxPayloadLength = 16 * 1024;
        int idleTimeout = 120;
        int maxBackpressure = 1 * 1024 * 1204;
        fu2::unique_function<void(uWS::WebSocket<false, true> *, HttpRequest *)> open = nullptr;
        fu2::unique_function<void(uWS::WebSocket<false, true> *, std::string_view, uWS::OpCode)> message = nullptr;
        fu2::unique_function<void(uWS::WebSocket<false, true> *)> drain = nullptr;
        fu2::unique_function<void(uWS::WebSocket<false, true> *)> ping = nullptr;
        fu2::unique_function<void(uWS::WebSocket<false, true> *)> pong = nullptr;
        fu2::unique_function<void(uWS::WebSocket<false, true> *, int, std::string_view)> close = nullptr;
    };
    typedef WebSocketBehavior<false> Behavior;
    typedef WebSocketBehavior<true> SSLBehavior;

    ...

    template <bool SSL>
    struct TemplatedApp {

    ...

        /*
        struct WebSocketBehavior {
            CompressOptions compression = DISABLED;
            int maxPayloadLength = 16 * 1024;
            int idleTimeout = 120;
            int maxBackpressure = 1 * 1024 * 1204;
            fu2::unique_function<void(uWS::WebSocket<SSL, true> *, HttpRequest *)> open = nullptr;
            fu2::unique_function<void(uWS::WebSocket<SSL, true> *, std::string_view, uWS::OpCode)> message = nullptr;
            fu2::unique_function<void(uWS::WebSocket<SSL, true> *)> drain = nullptr;
            fu2::unique_function<void(uWS::WebSocket<SSL, true> *)> ping = nullptr;
            fu2::unique_function<void(uWS::WebSocket<SSL, true> *)> pong = nullptr;
            fu2::unique_function<void(uWS::WebSocket<SSL, true> *, int, std::string_view)> close = nullptr;
        };
        */

    ...

        template <typename UserData>
        //TemplatedApp &&ws(std::string pattern, WebSocketBehavior &&behavior) {
        TemplatedApp &&ws(std::string pattern, WebSocketBehavior<SSL> &&behavior) {

    ...

    }

    ...

    }

    }

     

    <5>修改官方给的例子

    这是我上传到github上的网址: https://github.com/wangdamingll/uWebSocektsDemo.git


    int main() {
        /* ws->getUserData returns one of these */
        struct PerSocketData {

        };
        
        auto app = uWS::App();
        auto behavior = uWS::Behavior();
        behavior.compression= uWS::DISABLED;
        behavior.maxPayloadLength = 16 * 1024;
        behavior.idleTimeout = 10;
        behavior.open = [](auto *ws, auto *req) {

        };
        behavior.message = [](auto *ws, std::string_view message, uWS::OpCode opCode) {
            std::cout << "message: " << message << std::endl;
            ws->send(message, opCode);
        };
        behavior.drain = [](auto *ws) {

        };
        behavior.ping = [](auto *ws) {

        };
        behavior.pong = [](auto *ws) {

        };
        behavior.close = [](auto *ws, int code, std::string_view message) {

        };

        app.ws<PerSocketData>("/*", (uWS::Behavior&&)behavior).listen(9001, [](auto *token) {
                if (token) {
                    std::cout << "Listening on port " << 9001 << std::endl;
                }
        }).run();

    }

    <6>重新编译运行例子

     

    2、使用总结

    个人总结一下,此库不太好用,编译比较麻烦,官方给的demo使用信息较少

    展开全文
  • uWebSockets使用过程

    2019-11-20 16:43:13
    uWebSockets 最近领导要我用c++做一个websocket服务端,至于为毛一定要c++,不敢猜测领导的心思,我的想法是c++虽然效率高一点,但如果做的不好,或者使用的第三方库不明智(有bug或者使用有吴),更加得不偿失。我...

    uWebSockets

    最近领导要我用c++做一个websocket服务端,至于为毛一定要c++,不敢猜测领导的心思,我的想法是c++虽然效率高一点,但如果做的不好,或者使用的第三方库不明智(有bug或者使用有吴),更加得不偿失。我还是觉得用go做又快有好!
    废话小说!
    在网上查找了c++关于做websocket的文章都说uWebSockets好,是一个高效率、轻量级的websocket库,于是就开始下载体验。
    下载地址:https://github.com/uNetworking/uWebSockets
    看到好像作者一直在维护,这几天还有update,感觉应该不错。我用的github下载:
    环境 CentOS Linux release 7.7.1908 (Core)

    git clone https://github.com/uNetworking/uWebSockets.git
    下载下来后:
    ls uWebSockets
    在这里插入图片描述
    绿色的是我后来编译出来的examples。
    蓝岛makefile文件 直接make ,发现说缺少targert uSocket里面,纳闷了看看ls uSocket确实为空,看了下说名和百度找资料,可惜资料少的可伶。了解到uWebSockets依赖于uSocket,而正好 https://github.com/uNetworking下还有个uSockets的项目,于是直接删除uSockets目录,然后
    git clone https://github.com/uNetworking/uSockets.git

    下载下来,恩感觉还行,继续make
    还是悲剧:g++: error: unrecognized command line option ‘-std=c++17’
    需要c++17,
    看了下自己的g++版本 4.8.5肯定是不支持。起码要7点几,于是就研究安装gcc了。
    g++17安装过程请查看文章:
    https://blog.csdn.net/qq_35537557/article/details/103165072
    安装好之后 make 解决一系列小问题之后,居然make出来可执行文件了。
    在这里插入图片描述
    还有一些小问题 好像不影响,开始执行,又经过一些小问题终于跑起来了!
    网页测试结果:
    在这里插入图片描述
    ok!就拿这个给领导交差算了。里面最坑的就是c++17,由于最近一直没接触c++新的东西,还要网上学资料。其中一个std::string_view 化了我一两个小时的时间。安装c++17 花了我大半天时间,再做下东西的修改测试总共花了我两天时间,没关系反正领导给得起时间,半天就能干完的事情,人家愿意给两三天,人家乐意!

    展开全文
  • uWebSockets的使用

    千次阅读 2018-10-09 18:49:00
    uWebSockets如何如何好,就试一把 项目主页 https://github.com/uNetworking/uWebSockets 打开里面的vs项目文件,编译发现缺少uv.h 项目里面也没有说要依赖某个库,一查这个库可是鼎鼎大名的lib...

    最近要使用WebSockets做实时推送,然后看到网上一篇文章

    https://www.jianshu.com/p/64e36cd3ed1a

    说uWebSockets如何如何好,就试一把

    项目主页 https://github.com/uNetworking/uWebSockets

    打开里面的vs项目文件,编译发现缺少uv.h

    项目里面也没有说要依赖某个库,一查这个库可是鼎鼎大名的libuv

    https://github.com/libuv/libuv

    关于libuv的一些介绍https://blog.csdn.net/linuxandroidwince/article/details/72297630

    决定自己编译一个库出来,libuv官方的文档说在win下编译,需要配置如下

    ### Windows
    
    Prerequisites:
    
    * [Python 2.6 or 2.7][] as it is required
      by [GYP][].
      If python is not in your path, set the environment variable `PYTHON` to its
      location. For example: `set PYTHON=C:\Python27\python.exe`
    * One of:
      * [Visual C++ Build Tools][]
      * [Visual Studio 2015 Update 3][], all editions
        including the Community edition (remember to select
        "Common Tools for Visual C++ 2015" feature during installation).
      * [Visual Studio 2017][], any edition (including the Build Tools SKU).
        **Required Components:** "MSbuild", "VC++ 2017 v141 toolset" and one of the
        Windows SDKs (10 or 8.1).
    * Basic Unix tools required for some tests,
      [Git for Windows][] includes Git Bash
      and tools which can be included in the global `PATH`.
    
    To build, launch a git shell (e.g. Cmd or PowerShell), run `vcbuild.bat`
    (to build with VS2017 you need to explicitly add a `vs2017` argument),
    which will checkout the GYP code into `build/gyp`, generate `uv.sln`
    as well as the necesery related project files, and start building.
    
    ```console
    > vcbuild
    ```
    
    Or:
    
    ```console
    > vcbuild vs2017
    ```
    
    To run the tests:
    
    ```console
    > vcbuild test
    ```
    
    To see all the options that could passed to `vcbuild`:
    
    ```console
    > vcbuild help
    vcbuild.bat [debug/release] [test/bench] [clean] [noprojgen] [nobuild] [vs2017] [x86/x64] [static/shared]
    Examples:
      vcbuild.bat              : builds debug build
      vcbuild.bat test         : builds debug build and runs tests
      vcbuild.bat release bench: builds release build and runs benchmarks

    1.配置python执行路径

    2.下载build/gyp 由于git clone https://chromium.googlesource.com/external/gyp build/gyp 这个地址墙了,所以替换为https://github.com/nodejs/node-gyp

    选取里面的node-gyp 的gyp目录拷贝到build/

    屏蔽这句

    echo git clone https://chromium.googlesource.com/external/gyp build/gyp
    @git clone https://chromium.googlesource.com/external/gyp build/gyp
    if errorlevel 1 goto gyp_install_failed
    goto have_gyp

     运行 vcbuild.bat

    生成libuv.lib
    uWebSockets项目中添加D:\opensource\libuv-v1.23.2\libuv-v1.23.2\include

    编译报错

    无法打开包括文件: “openssl/opensslv.h”: No such file or directory

    下载 https://github.com/openssl/openssl

    也可以直接 直接下载安装文件,里面所有的头文件,库都有,一定要选全版本,不能选择轻版本 https://slproweb.com/products/Win32OpenSSL.html  

     

    转载于:https://www.cnblogs.com/baldermurphy/p/9759660.html

    展开全文
  • Add uwebsockets/18.3.0

    2020-12-02 08:13:09
    <div><p>Specify library name and version: <strong>uwebsockets/18.3.0</strong></p> <p>It is a header-only library. Waiting for usockets #2012 to be ready for test_package. <ul><li>[x] I've read the...
  • Add uWebSockets.js benchmark

    2020-12-08 21:06:24
    <div><p>This PR adds benchmark for https://github.com/uNetworking/uWebSockets.js</p><p>该提问来源于开源项目:fastify/benchmarks</p></div>
  • udacity作业工程编译报错: ...是缺少工程所需的uWebSockets库,安装过程如下: 环境:Ubuntu16.04 cmake: 3.15.0 make: 4.1 gcc: 5.4.0 sudo apt-get install libuv1-dev git clone htt...

    udacity作业工程编译报错:

    main.cpp:2:21: fatal error: uWS/uWS.h: 没有那个文件或目录”

    是缺少工程所需的uWebSockets库,安装过程如下:

    环境:Ubuntu16.04

    cmake: 3.15.0

    make: 4.1

    gcc: 5.4.0

    sudo apt-get install libuv1-dev
    git clone https://github.com/uNetworking/uWebSockets.git
    
    cd uWebSockets/
    git log
    git checkout  e94b6e1
    mkdir build
    cd build/
    cmake ..
    make
    sudo make install
    
    sudo ln -s /usr/lib64/libuWS.so  /usr/lib/libuWS.so

     

    展开全文
  • migrate to uWebSockets.js

    2021-01-11 00:40:10
    <p>Migrate to <code>uWebSockets.js</code> - the latest iteration of <code>uws</code> for the Node ecosystem. <h3>Other information (e.g. related issues) <p>...
  • Simple, secure[1] & standards compliant[2] web server for the most demanding[3] of applications. Read more... Optimized security Being meticulously optimized for speed and memory footprint,...
  • <p>I noticed that the uWebSockets library used is a major revision out of date. <p>At https://github.com/uNetworking/uWebSockets/blob/v0.14/README.md, uWebsockets advertises over 33% performance gain ...
  • Add uWebSockets.js (Node)

    2021-01-12 03:08:57
    <ul><li>Language : node</li><li>Repo : https://github.com/uNetworking/uWebSockets.js</li><li>Author : </li></ul> <p><img alt="benchmark" src=...
  • <div><p>seems recently uWebsockets is popular because of performance. is it possible to switch use uWebsockets? , will it be better?</p><p>该提问来源于开源项目:sockjs/sockjs-node</p></div>
  • uWebSockets :最轻量级的、高效的、可伸缩的WebSocket服务器实现
  • require ( 'uWebSockets.js' ) . SSLApp ( { /* There are more SSL options, cut for brevity */ key_file_name : 'misc/key.pem' , cert_file_name : 'misc/cert.pem' , } ) . ws ( '/*' , { /* There are ...
  • 我可能会在制作真正的前叉/端口之前在circuitpython上使用uwebsockets进行测试。 该代码已适用于ESP32S2 firt,然后返回使用socket.recv等。 当前它不是基于最新的uwebsockets,而是我正在使用并与我的代码一起...
  • uWebSockets:简单,安全和符合标准的Web服务器,适用于最苛刻的应用程序
  • <div><p>Hi, I was at the head of visualizer branch (10acff636041f66a5ecb10ab49dec3d41f65be87) and tried to install uWebSockets using <code>install-mac.sh</code> script on my mac. The script starts ...
  • <p>There they mention that socket.io is not so good and mention that uwebsockets is performing better. <p>Could this maybe be something worth considering for the websocket communications?</p><p>该提问...
  • uSockets的编译和使用(一) ...uWebSockets项目地址:https://github.com/uNetworking/uWebSockets uSockets项目地址:https://github.com/uNetworking/uSockets 一、摘要 之前工作中有用到过websocket,所以最近研...
  • <div><p>Bumps <a href="https://github.com/uNetworking/uWebSockets.js">uWebSockets.js</a> from v17.4.0 to v17.6.0. Release notes <p><em>Sourced from <a href="https://github.com/uNetworking/uWebSockets...
  • <div><p>Bumps <a href="https://github.com/uNetworking/uWebSockets.js">uWebSockets.js</a> from v17.1.0 to v17.3.0. Release notes <p><em>Sourced from <a href="https://github.com/uNetworking/uWebSockets...
  • uWebSockets 0.9.0 发布了,包括性能提升和bug修复。uWebSockets,是一款高度可拓展的最轻量级、效率最高的WebSocket服务器库之一。它具有易于使用的,完全异步面向对象的接口和与其他竞品对比扩展到数百万连接只...
  • <div><p>Bumps <a href="https://github.com/uNetworking/uWebSockets.js">uWebSockets.js</a> from <code>69026e1</code> to <code>116a85f</code>. Commits <ul><li><a href="https://github.com/uNetworking/...
  • <div><p>Bumps <a href="https://github.com/uNetworking/uWebSockets.js">uWebSockets.js</a> from v18.3.0 to v18.4.0. Release notes <p><em>Sourced from <a href="https://github.com/uNetworking/uWebSockets...
  • 最近在学习websockets的库,cpp主要有三个,websocketpp/libwebsockets/uwebsockets.看了一下简单明了的就是uWebSockets了,但是这个代码写的确实有点抽象。。。不太像我的风格。websocketpp要boost,有点巨大,不想...
  • uWebSockets.js'); const HTTP_LISTEN_PORT = 9001 function httpHandler(res, req) { res.end('Nothing to see here!'); } const server = uWS.App(); server.any('/*', ...
  • <p>Before submitting your PR, please review the following checklist : <h2>If you are adding a framework <ul><li>[x] A <code>Dockerfile</code> exists, or can be built ?</li><li>[x] I'...
  • <div><p><img alt="image" src="https://img-blog.csdnimg.cn/img_convert/e42c74d94770b93ad61e3b88eb399dbf.png" /></p>该提问来源于开源项目:sockjs/sockjs-node</p></div>
  • <div><p>LINK : error LNK2001: 无法解析的外部符号 _DllMainCRTStartup</p><p>该提问来源于开源项目:xmake-io/xmake</p></div>
  • http://www.codza.com/blog/udacity-uws-in-visualstudio 转载于:https://www.cnblogs.com/flyinggod/p/10656044.html
  • 请查看以上目录(服务器,客户端)中的README文件,以查看每个软件包的文档。

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 143
精华内容 57
热门标签
关键字:

uwebsockets