精华内容
下载资源
问答
  • uWebSocket源码

    2019-03-29 15:02:40
    使用c++创建websocket客户端服务端的三方代码,使用简单,包含依赖的libuv库
  • uWebSocket http

    千次阅读 2018-10-17 17:54:03
    uWebSocket是支持http请求的,不过比较粗糙吧。 template <bool isServer> void Group<isServer>::onHttpRequest(std::function<void (HttpResponse *, HttpRequest, char *, ...

    uWebSocket是支持http请求的,不过比较粗糙吧。

    template <bool isServer>
    void Group<isServer>::onHttpRequest(std::function<void (HttpResponse *, HttpRequest, char *, size_t, size_t)> handler) {
        httpRequestHandler = handler;
    }

     

    处理请求后,返回给浏览器,报错。

    Access-Control-Allow-Origin 跨域请求

     

    在“HTTPSocket.h”第207行中,修改一下,加入应答头“Access-Control-Allow-Origin”

    int offset = transformData.hasHead ? 0 : std::sprintf(dst, "HTTP/1.1 200 OK\r\nAccess-Control-Allow-Origin:*\r\nContent-Length: %u\r\n\r\n", (unsigned int) length);//Access-Control-Allow-Origin 跨域请求

    还有就是,收到的消息中文乱码。

    C++ 中自己 Url 解码,然后从utf-8转一下就好。

    unsigned char ToolClass::ToHex(unsigned char x)
    	{
    		return  x > 9 ? x + 55 : x + 48;
    	}
    	//------------------------------------------------------------------
    	unsigned char ToolClass::FromHex(unsigned char x)
    	{
    		unsigned char y;
    		if (x >= 'A' && x <= 'Z') y = x - 'A' + 10;
    		else if (x >= 'a' && x <= 'z') y = x - 'a' + 10;
    		else if (x >= '0' && x <= '9') y = x - '0';
    		//else assert(0);
    		return y;
    	}
    	//------------------------------------------------------------------
    	std::string ToolClass::UrlEncode(const std::string& str)
    	{
    		std::string strTemp = "";
    		size_t length = str.length();
    		for (size_t i = 0; i < length; i++)
    		{
    			if (isalnum((unsigned char)str[i]) ||
    				(str[i] == '-') ||
    				(str[i] == '_') ||
    				(str[i] == '.') ||
    				(str[i] == '~'))
    				strTemp += str[i];
    			else if (str[i] == ' ')
    				strTemp += "+";
    			else
    			{
    				strTemp += '%';
    				strTemp += ToHex((unsigned char)str[i] >> 4);
    				strTemp += ToHex((unsigned char)str[i] % 16);
    			}
    		}
    		return strTemp;
    	}
    	//------------------------------------------------------------------
    	std::string ToolClass::UrlDecode(const std::string& str)
    	{
    		std::string strTemp = "";
    		size_t length = str.length();
    		for (size_t i = 0; i < length; i++)
    		{
    			if (str[i] == '+') strTemp += ' ';
    			else if (str[i] == '%')
    			{
    				//assert(i + 2 < length);
    				if (i + 2 < length)
    				{
    					unsigned char high = FromHex((unsigned char)str[++i]);
    					unsigned char low = FromHex((unsigned char)str[++i]);
    					strTemp += high * 16 + low;
    				}
    			}
    			else strTemp += str[i];
    		}
    		return strTemp;
    	}

     

    展开全文
  • libuv与uWebSocket 掉坑之旅

    千次阅读 2018-09-21 09:15:10
    libuv和uWebSocket都是开源的,这一点很棒。 libuv是Node.js的内核,强大、简洁、优雅。 uWebSocket浅浅的封装了libuv,改装成websocket版(仅仅用了少量的libuv的东西)。 掉坑之旅开始:上周一切完美的事情,...

    libuvuWebSocket都是开源的,这一点很棒。

    libuv是Node.js的内核,强大、简洁、优雅。

    uWebSocket浅浅的封装了libuv,改装成websocket版(仅仅用了少量的libuv的东西)。

    掉坑之旅开始:上周一切完美的事情,周一发生了转折。客户端和服务端在同一台机器上,客户端连接服务端,竟然需要1分钟左右才能连接上,拔掉网线,瞬间就连上了。这也太神奇了吧。一大堆业务逻辑,还是多线程,找起来真费劲,头皮发麻。小伙伴说是不是中毒了,一扫真的有毒。杀毒3小时后,还是一样的效果。痛定思痛,认真划分模块,一点点测试,终于找到了,原来服务端还需要连接一个远端的服务器,而这个服务器端口改了。

    查看源码发现:uWebSocket 没有直接用Libuv封装的完成端口,自己又整了一套,其中:

    ::connect(fd, result->ai_addr, result->ai_addrlen);

    这一句阻塞5秒左右。完成端口也没用多线程,这一句:

    success = GetQueuedCompletionStatusEx

    又阻塞5秒,再加上断线重连,其他的客户端根本没机会连上来。

     

    找到问题,修改就容易了。

    展开全文
  • <div><p>P2P technologies should be scalable and efficient when it goes to high loads. ...<p>This <a href="https://levelup.gitconnected.com/will-node-js-forever-be-the-sluggish-golang-f632130e5c7a">...
  • uWebSockets :最轻量级的、高效的、可伸缩的WebSocket服务器实现
  • MicroPython WebSockets(ESP8266实现) ESP8266(仅客户端ATM)的websocket的实现。 这是一项正在进行中的工作,其中一些可能会移入micropython内置的modwebsocket C模块中,但这还不完整,并且握手不符合标准。...
  • 系统:centos7 编译器:clion uSockets uSockets是µWebSockets使用的跨平台异步联网和事件基础库。 它可以在Linux,macOS,FreeBSD和Windows上运行。大多数是C11,而一些可选部件是C ++ 17。 ...

    系统:centos7
    编译器:clion

    uSockets

    uSockets是µWebSockets使用的跨平台异步联网和事件基础库。

    它可以在Linux,macOS,FreeBSD和Windows上运行。大多数是C11,而一些可选部件是C ++ 17。

    编译

    编译生成静态文件

    $ git clone https://github.com/uNetworking/uSockets.git
    $ cd uSockets/
    $ make
    rm -f *.o
    cc -DLIBUS_NO_SSL -std=c11 -Isrc -flto -O3 -c src/*.c src/eventing/*.c src/crypto/*.c
    ar rvs uSockets.a *.o
    ar: 正在创建 uSockets.a
    a - bsd.o
    a - context.o
    a - epoll_kqueue.o
    a - gcd.o
    a - libuv.o
    a - loop.o
    a - openssl.o
    a - socket.o
    a - wolfssl.o
    
    

    在这里插入图片描述

    测试编译例子

    $ make examples
    rm -f *.o
    cc -DLIBUS_NO_SSL -std=c11 -Isrc -flto -O3 -c src/*.c src/eventing/*.c src/crypto/*.c
    ar rvs uSockets.a *.o
    r - bsd.o
    r - context.o
    r - epoll_kqueue.o
    r - gcd.o
    r - libuv.o
    r - loop.o
    r - openssl.o
    r - socket.o
    r - wolfssl.o
    for f in examples/*.c; do cc -flto -O3 -DLIBUS_NO_SSL -std=c11 -Isrc -o $(basename "$f" ".c") "$f" uSockets.a; done
    
    

    在这里插入图片描述

    第一个例子

    在这里插入图片描述

    使用浏览器测试:
    在这里插入图片描述
    效果:
    在这里插入图片描述

    使用

    1、使用clion创建一个c++17工程
    2、将刚才目录下的uSockets.alibusockets.h复制到工程目录下
    在这里插入图片描述
    在这里插入图片描述

    uWebSockets

    uWebSockets,是一款高度可拓展的最轻量级、效率最高的WebSocket服务器库之一。它具有易于使用的,完全异步面向对象的接口和与其他竞品对比扩展到数百万连接只使用一小部分内存的特点。它不仅仅只考虑到了高性能和可拓展性,还考虑到了安全性和稳定性。

    uWebSockets支持Linux, OS X & Windows三个平台,还支持SSL/TLS以及与外部的HTTPS服务器集成。

    编译

    git clone https://github.com/uNetworking/uWebSockets.git
    $ cd uWebSockets/
    

    在这里插入图片描述

    int main()
    {
        /* this is an echo server that properly passes every supported Autobahn test */
        uWS::Server server(3000);
        server.onConnection([](uWS::WebSocket socket) {
            cout << "[Connection] clients: " << ++connections << endl;
        });
        server.onMessage([](uWS::WebSocket socket, char *message, size_t length, uWS::OpCode opCode) {
            socket.send(message, length, opCode);
        });
        server.onDisconnection([](uWS::WebSocket socket) {
            cout << "[Disconnection] clients: " << --connections << endl;
        });
        server.run();
    }
    
    展开全文
  • 一个好用的C++编写的websocket服务端dll动态库,包括导出头文件,lib,dll,所需资源完整,下载可用。包含Debug版和Release版。头文件一看就懂,使用方便。可支持最多开启8个服务端口,足够一般程序使用。
  • 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 花了我大半天时间,再做下东西的修改测试总共花了我两天时间,没关系反正领导给得起时间,半天就能干完的事情,人家愿意给两三天,人家乐意!

    展开全文
  • Ubuntu18.04安装uWebSockes

    2020-03-23 16:15:44
    新建文件install_ubuntu.sh touch install_ubuntu.sh 将下列命令行代码复制到install_ubuntu.sh中 #! /bin/bash sudo apt-get update sudo apt-get install git libuv1-dev libssl-dev gcc g++ cmake make ...
  • uSockets的编译和使用(一) 参考网址: uWebSockets项目地址:https://github.com/uNetworking/uWebSockets uSockets项目地址:... 一、摘要 之前工作中有用到过websocket,所以最近研...
  • 1. 原生注解pom.xml<dependency> <groupId>org.springframework.boot</groupI...
  • uSockets的编译和使用(一) 参考网址: ... ... 一、摘要 之前工作中有用到过websocket,所以最近研究了一下相关的开源项目,据说uWebSockets这个库很棒,就想研究一下。不看不知道,一看吓一跳啊,网上相关的资料少的...
  • ubuntu16.04 编译uWebSockets

    千次阅读 2019-10-23 17:13:43
    udacity作业工程编译报错: “main.cpp:2:21: fatal error: uWS/uWS.h: 没有那个文件或目录” 是缺少工程所需的uWebSockets库,安装过程如下: 环境:Ubuntu16.04 cmake: 3.15.0 make: 4.1 ...
  • 参考网址: uWebSockets项目地址:https://github.com/uNetworking/uWebSockets ... 一、摘要: 1、编译和使用uWebSockets的环境为win10,vs2017 专业版,所有的依赖库都是32位debug版本的,Linux上未尝试 2、...
  • 安装uWebSocketIO

    2019-12-21 19:19:00
    https://github.com/uNetworking/uWebSockets sudo apt-get install libuv1-dev git clone https://github.com/uNetworking/uWebSockets.git cd uWebSockets/ git checkout e94b6e1 mkdir build cd build/ c...
  • java端代码 package org.jeecg.modules.cases.controller; import java.io.IOException; import java.util.List; import java.util.concurrent.CopyOnWriteArraySet;...import javax.websocket.OnClose;...
  • 在github下载的demo能用自带的js文件访问,但当用线上工具访问时1006 项目地址:... 主要代码: <code>@...public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { ...
  • rust的websocket库ws-rs 架构

    千次阅读 2019-12-18 14:15:48
    架构 WebSocket需要两个基本组件:Factory和Handler。Factory是实现Factory trait的任何struct。 WS-RS已经为以Sender为第一个参数的闭包提供了Factory trait实现,因此可以将闭包作为Factory传递给任何一个调用...
  • 目录一、概述二、基本安装2.1 Java安装2.2 Apache Tomcat安装2.3 Eclipse EE安装三、正式部署3.1 创建一个简单java web项目3.2 服务端部署3.3 运行3.4 局域网连接Websocket 一、概述 本文针对Ubuntu系统(Win10下的...
  • Linux系统下websocket服务端程序整理

    千次阅读 2019-06-12 19:47:49
    最近在学习websocket相关知识,对相关引用知识进行整理。 在网络上找了两个demo进行验证,每个样例考虑都有不同点,最好能合并两者长处,再结合实际场景来使用。 1.验证测试Demo1 /* server.c */ ...
  • uWebSockets的使用

    千次阅读 2018-10-09 18:49:00
    最近要使用WebSockets做实时推送,然后看到网上一篇文章 ... 说uWebSockets如何如何好,就试一把 ... 打开里面的vs项目文件,编译发现缺少uv.h 项目里面也没有说要依赖某个库,一查这个库可是鼎鼎大名的lib...
  • springboot集成Websocket(含源码)

    千次阅读 2018-09-29 15:22:43
    1.Websocket介绍 ...即每次建立连接都得传递cookie、session信息来证明自己的身份,因为服务器是不会记住之前连接的信息。同时只有客户端向服务端发出请求才能获得返回信息,服务器是不能主动给客户端发送连接的,因为...
  • WebSocket的广播式

    千次阅读 2018-09-01 19:11:03
    一 点睛 WebSocket为浏览器和服务端提供了双工异步通信的功能,即浏览器可以向服务端发送消息,服务端也可以向浏览器发送消息。WebSocket需浏览器的支持,但一般目前的主流浏览器都支持。 WebSocket是通过一个...
  • websocket详解

    2018-03-21 18:40:03
    Websocket详解 websocket草案版本 websocket主要有两种协议草案,一种是早期的draft-hixie-thewebsocketprotocol,另外一种是延用至现在的draft-ietf-hybi-thewebsocketprotocol。两种草案中又有各自对应的细化...
  • 使用 WebSockets 进行 HTML5 视频直播

    千次阅读 2016-05-06 22:25:11
    本文旨在实现使用摄像头采集视频,并且可以在网页实时显示,主要参考的两篇博文为: 1. 视频实时显示的三种方案 ...我们使用博文1介绍的第三种方案,将摄像头采集到的视频流使用ffmpeg进行编码,并且将其推送给远程...
  • C/C++ 实现websocket客户端

    万次阅读 2017-12-19 21:59:59
    网上有一个现存的开源库,websocketpp,但好像不太适合目前开发的项目,好在是开源库,可以找找源代码来整一波,fork一波websocketpp,其实整个东西大概就是一个websocket头协议,网上有太多讲websocket头协议,我只...
  • Websocket Component

    2014-12-19 16:33:00
    As of Camel 2.10, the Websocket component supports SSL/TLS configuration through the Camel JSSE Configuration Utility. So to use wss:// protocol, the SSLContextParameters must be defined: <...
  • 问题描述:使用Tomcat自带的WebSocket实现,实现了我自己的服务器端程序,但是启动服务器时,发生这样的错误: No payload parameter present on the method [onMessage];查阅官方文档无果。 ...
  • Windows下编译websocketpp

    千次阅读 2016-12-05 09:42:29
    系统环境是win7 64位,安装了vs2008 准备工作 1.到https://github.com/zaphoyd/websocketpp/tags下载websocketpp最新稳定版0.6.0 2.到https://sourceforge.net/projects/boost/files/boost/1.62.0/下载boost最新版本...

空空如也

空空如也

1 2 3
收藏数 46
精华内容 18
关键字:

uwebsocket