精华内容
下载资源
问答
  • websocket前端开源
    2021-04-17 03:05:19

    WebSocket 不是 JavaScript 的一个接口,而是一个定义良好的基于消息的协议。得益于不同平台对WebSocket 协议的广泛实现,它更为跨多种平台的 实时网络应用程序开发提供了极大的方便。除了可以在前端开发的 JavaScript 中使用 WebSocket 之外,我们也可以在 Java、C++、Go、Rust 等编程语言平台中使用 WebSocket。

    我们汇总整理了8款目前常用的websocket开源框架,都是高性能的websocket库,大家可以来了解一下。

    1、GoEasy

    目前GoEasy提供完整的websocket前后端解决方案,简单的几行代码集成,即可快速搭建您专属的websocket服务。

    同时GoEasy还支持更多的前端技术框架比如小程序、react、vue、uniapp等,还支持php、java、python等服务端语言。 有websocket使用需求的开发者可以来注册GoEasy账号进行测试使用。【立即注册】

    2、 noPoll

    noPoll 是一个 WebSocket 的开源实现,使用 ANSI C 编写,可用于构建纯 WebSocket 解决方案和为已有的面向 TCP 的应用程序提供 。

    3、 Wslay

    Wslay 是一个用 C 语言实现的 WebSocket 开发库。实现了 RFC 6455 中描述的第 13 版本的协议。提供了基于事件的 API 和基于帧的底层 API。特别适合非堵塞的 reactor 模式风格应用。可在不同的事件中设置回调。Wslay 只支持 WebSocket 协议的数据传输部分,不执行 HTTP 的握手过程。

    4、 libwebsockets

    libwebsockets是lighstweight纯C库建成使用最小的CPU和内存资源,并提供快速吞吐量的两个方向。

    它支持SSL。

    5、 websocket++

    WebSocket++ 是一个只包含 C++ 头文件的 WebSocket 的 C++ 开发包,实现了 RFC 6455 也就是 WebSocket 协议。可以在 C++ 应用中实现 WebSocket 客户端和服务器端功能。使用可交换的网络传输模块,包括 C++ iostreams 和 Boost Asio。

    6、uWebSockets

    uWebSockets,µWS (“microWS”) 是一个客户端和服务器的 WebSocket 和 HTTP 实现。它简单、高效且轻量级。

    这个库在底层依赖于 libuv 库,作为异步网络 I/O 库。

    7、Poco Websocket

    POCO C++ 库是一个跨平台的 C++ 网络库。其中包含了 WebSocket 的实现模块。Poco 库是一个比较强大,比较复杂的网络库。

    8、Beast

    基于 Boost.Asio 以 C++11 构建的 HTTP 和 WebSocket 库。Boost 项目的 HTTP 和 WebSocket 库。

    在以上的 6 个 C/C++ WebSocket 库中,其中有 3 个(Crow、websocketpp(WebSocket++)和 Beast)是基于 Boost 的网络库实现的。

    更多相关内容
  • 前端开源库-robust-websocket健壮的websocket,浏览器的健壮的重新连接websocket客户机
  • 前端开源库-home-assistant-js-websocket家庭助理JS WebSocket,家庭助理WebSocket客户端
  • 前端开源库-angular2-websocketAngular2 WebSocket,基于https://github.com/angularclass/angular-websocket并迁移到Angular2安装
  • 前端开源库-home-assistant-js-websocket.zip
  • websocketd是WebSocket守护程序。 它负责处理WebSocket连接,启动程序以处理WebSocket以及在程序和Web浏览器之间传递消息。 如果可以从命令行运行程序,则可以编写... 在构建前端之前,请与WebSocket程序进行交互。
  • 前端开源库-promised-del

    2019-08-29 17:57:55
    前端开源库-promised-del承诺的del,增加对承诺支持的del包装。
  • 2020年常用websocket开源库整理汇总

    千次阅读 2020-02-19 16:25:08
    websocket是html5中新增的协议,websocket的特点是全双工,服务端和...除了可以在前端开发的JavaScript 中使用 WebSocket 之外,我们也可以在 Java、C++、Go、Rust 等编程语言平台中使用 WebSocket。 我汇总整理了8...

    websocket是html5中新增的协议,websocket的特点是全双工,服务端和客户端可以互相发送消息。得益于不同平台对websocket协议的广泛实现,它为跨多种平台的实时网络应用程序开发提供了极大的方便。除了可以在前端开发的JavaScript 中使用 WebSocket 之外,我们也可以在 Java、C++、Go、Rust 等编程语言平台中使用 WebSocket。

    我汇总整理了8款目前常用的websocket开源框架,都是比较优秀的websocket库,大家可以来了解一下。

    1、GoEasy

    GoEasy是一款在国内比较流行的websocket开发框架,目前GoEasy提供完整的websocket前后端解决方案。据了解,GoEasy目前支持比较多的前端技术/框架比如小程序、react、vue、uniapp等的消息发送和接收,另外还支持php、java、python等服务端语言通过调用Restful API实现服务端的消息推送。有websocket使用需求的开发者可以来注册GoEasy账号进行测试使用。

    项目主页:https://www.goeasy.io/

    2、 noPoll

    noPoll 是一个 WebSocket 的开源实现,使用 ANSI C 编写,可用于构建纯 WebSocket 解决方案和为已有的面向 TCP 的应用程序提供 。

    项目主页:http://www.aspl.es/nopoll/

    3、 Wslay

    Wslay 是一个用 C 语言实现的 WebSocket 开发库。实现了 RFC 6455 中描述的第 13 版本的协议。提供了基于事件的 API 和基于帧的底层 API。特别适合非堵塞的 reactor 模式风格应用。可在不同的事件中设置回调。Wslay 只支持 WebSocket 协议的数据传输部分,不执行 HTTP 的握手过程。

    项目主页:https://tatsuhiro-t.github.io/wslay/tutorial.html

    4、 libwebsockets

    libwebsockets是一款轻量级用来开发服务器和客户端的C库。按照官方给出的介绍来看,它不仅支持ws,wss还同时支持http与https,可以轻轻松松结合openssl等库来实现ssl加密。

    项目主页:https://libwebsockets.org/

    5、 websocket++

    WebSocket++ 是一个只包含 C++ 头文件的 WebSocket 的 C++ 开发包,实现了 RFC 6455 也就是 WebSocket 协议。可以在 C++ 应用中实现 WebSocket 客户端和服务器端功能。使用可交换的网络传输模块,包括 C++ iostreams 和 Boost Asio。

    项目主页:https://github.com/zaphoyd/websocketpp

    6、uWebSockets

    uWebSockets,µWS (“microWS”) 是一个客户端和服务器的 WebSocket 和 HTTP 实现。它简单、高效且轻量级。

    这个库在底层依赖于 libuv 库,作为异步网络 I/O 库。

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

    7、Poco Websocket

    POCO C++ 库是一个跨平台的 C++ 网络库。其中包含了 WebSocket 的实现模块。Poco 库是一个比较强大,比较复杂的网络库。

    项目主页:https://pocoproject.org/

    8、Beast

    基于 Boost.Asio 以 C++11 构建的 HTTP 和 WebSocket 库。Boost 项目的 HTTP 和 WebSocket 库。

    项目主页:https://www.boost.org/doc/libs/1_66_0/libs/beast/doc/html/index.html

    以上这些便是我近期收集整理好的常用websocket开源库,如果大家有自己使用起来比较不错的websocket库,欢迎评论补充。

    展开全文
  • 前端开源库-primus.io

    2019-08-29 18:39:55
    前端开源库-primus.io普里默斯。伊奥,普里默斯。伊奥让普里默斯的工作变得有点圆滑。
  • 前端开源库-peer

    2019-08-30 03:42:34
    前端开源库-peerPeer,PeerJS服务器组件
  • 前端开源库-mosca

    2019-08-29 18:06:54
    前端开源库-mosca作为模块的mosca、mqtt代理
  • 前端开源库-fuse-box

    2019-08-30 02:46:16
    前端开源库-fuse-box保险丝盒,保险丝盒,一个做得对的bundler
  • 序言AWS 一个前端websocket工具库。信息原创作者:傲世孤尘开源协议:MIT当前版本:1.0.0发布日期:2019-04-02最后更新日期:2019-05-07交流Q群527393872特性内置日志方便调试,可通过日志级别过滤统计收发消息数、...
  • 前端开源库-tea-time

    2019-08-30 01:58:18
    前端开源库-tea-time茶时间,单元测试:茶时间!
  • WebSocket 是 HTML5 的一个引入注目的特性,它通常用于 Web 端,为构建实时的 Web 应用提供方便。WebSocket 是一个基于 TCP 的协议,它借助于 HTTP 请求,建立客户端与服务器端之间的双向...WebSocket 不是 JavaScr...

    WebSocket 是 HTML5 的一个引入注目的特性,它通常用于 Web 端,为构建实时的 Web 应用提供方便。WebSocket 是一个基于 TCP 的协议,它借助于 HTTP 请求,建立客户端与服务器端之间的双向通道,通道建立完成后,客户端和服务器端都可以通过这条通道方便地收发消息,因而 WebSocket 一向有着 “Web 的 TCP” 之称。

    WebSocket 不是 JavaScript 的一个接口,而是一个定义良好的基于消息的协议。得益于不同平台对于 WebSocket 协议的广泛实现,它更为跨多种平台的 实时网络应用程序 开发提供了极大的方便。除了可以在前端开发的 JavaScript 中使用 WebSocket 之外,我们也可以在 Java、C++、Go、Rust 等编程语言平台中使用 WebSocket。

    uWebSockets 是一个 C/C++ 的 WebSocket 库,它的GitHub 主页列出了一些常见的 WebSocket 实现库的对比.

    其中,ws-rs,项目主页,GitHub 主页,是一个轻量级的,事件驱动的用于 Rust 的 WebSocket 库。Gorilla,项目主页,GitHub 主页,是 Go 语言的 Web 工具包,它包含了 WebSocket 的实现,WebSocket 实现的GitHub 主页。websockets,项目主页,GitHub 主页,是一个 Python 的 WebSocket 实现。Socket.IO,项目主页,GitHub 主页,主要是 Node.JS 服务器的实时应用框架,其中包含了 WebSocket 的实现。其它库则都是 C/C++ 的 WebSocket 实现。

    从中我们可以捞到 uWebSockets、Crow、websocketpp、Beast 这样几个 C/C++ 的 WebSocket 库。此外,还有 libwebsockets 和 POCO 库的 WebSocket 模块。这样就总共有 6 个 C/C++ 的 WebSocket 库可以用。这里汇总已知的可以在 C++ 中使用的 WebSocket 库。

    uWebSockets

    uWebSockets,µWS ("microWS") 是一个客户端和服务器的 WebSocket 和 HTTP 实现。它简单、高效且轻量级。

    这个库在底层依赖于libuv库,作为异步网络 I/O 库。

    libwebsockets

    规范 libwebsockets.org websocket 库

    在 Mac OS 上编译通过如下方式编译这个库:

    $ git clone https://github.com/warmcat/libwebsockets.git

    $ cd libwebsockets

    $ mkdir build

    $ cd build

    $ cmake ..

    $ make

    一些比较老版本的 Mac OS 在上面执行 cmake .. 会报出如下的错误:

    -- Performing Test LWS_HAVE_VISIBILITY - Success

    Compiling with SSL support

    CMake Error at /usr/local/Cellar/cmake/3.5.2/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:148 (message):

    Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the

    system variable OPENSSL_ROOT_DIR (missing: OPENSSL_INCLUDE_DIR)

    Call Stack (most recent call first):

    /usr/local/Cellar/cmake/3.5.2/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)

    /usr/local/Cellar/cmake/3.5.2/share/cmake/Modules/FindOpenSSL.cmake:370 (find_package_handle_standard_args)

    CMakeLists.txt:1438 (find_package)

    -- Configuring incomplete, errors occurred!

    See also "/Users/netease/Projects/CppWebsockets/libwebsockets/build/CMakeFiles/CMakeOutput.log".

    See also "/Users/netease/Projects/CppWebsockets/libwebsockets/build/CMakeFiles/CMakeError.log".

    这主要是系统默认的 OpenSSL 库版本过老导致的。这个问题可以通过安装一个新版本的 OpenSSL 库,并在执行 cmake .. 之前定义系统环境变量 OPENSSL_ROOT_DIR 来解决,如 OpenSSL 安装在 /usr/local/opt/openssl/ 目录中,则像下面这样定义环境变量:

    $ export OPENSSL_ROOT_DIR=/usr/local/opt/openssl/

    在执行 make 编译这个库时,会报出另一个问题:

    [ 46%] Built target websockets

    Scanning dependencies of target test-server-extpoll

    [ 47%] Building C object CMakeFiles/test-server-extpoll.dir/test-apps/test-server.c.o

    [ 48%] Linking C executable bin/libwebsockets-test-server-extpoll

    clang: error: argument unused during compilation: '-pthread'

    make[2]: *** [bin/libwebsockets-test-server-extpoll] Error 1

    make[1]: *** [CMakeFiles/test-server-extpoll.dir/all] Error 2

    这个问题需要修改工程的编译配置文件,具体而言,是修改工程根目录下的 CMakeLists.txt,移除其中出现的所有 -pthread 标记。

    Poco Websocket

    POCO C++ 库是一个跨平台的 C++ 网络库。其中包含了 WebSocket 的实现模块。Poco 库是一个比较强大,比较复杂的网络库。

    在 Mac OS 上,可以通过执行 build_cmake.sh 来构建,如:

    $ ./configure  --minimal

    $ ./build_cmake.sh

    Crow

    Crow 是一个 Web 微框架。

    这个库在底层依赖于 boost 库,作为异步网络 I/O 库。

    websocketpp(WebSocket++)

    websocketpp 是 C++ 的 WebSocket 客户端/服务器库。它是一个开源的只包含头文件的 C++ 库,它实现了 RFC6455 WebSocket 协议。它允许向 C++ 程序中集成 WebSocket 客户端和服务器功能。它使用可交换的网络传输模块,包括基于 C++ iostreams 的和基于Boost Asio的。

    Beast

    基于 Boost.Asio 以 C++11 构建的 HTTP 和 WebSocket 库。Boost 项目的 HTTP 和 WebSocket 库。

    在以上的 6 个 C/C++ WebSocket 库中,其中有 3 个(Crow、websocketpp(WebSocket++)和 Beast)是基于 Boost 的网络库实现的。

    参考资料:

    展开全文
  • 前端开源库-bebop

    2019-08-30 09:51:31
    前端开源库-bebopBebop,代码忍者,代码忍者!以惊人的速度发展。
  • 前端开源库-bsock

    2019-08-29 16:58:42
    前端开源库-bsockBsock、Websocket自行车棚
  • 前端开源库-cyboard

    2019-08-30 00:04:31
    前端开源库-cyboardCyboard,事件驱动墙板服务器
  • 前端开源库-server-kit

    2019-08-29 17:35:00
    前端开源库-server-kit服务器套件,极简的HTTP和WebSocket服务器和路由器。
  • 前端开源库-stellar-fw

    2019-08-30 03:29:13
    前端开源库-stellar-fwstellar fw是一个基于操作的模块化Web框架,可以轻松创建Web API
  • 前端开源库-happner-2

    2019-08-30 05:52:15
    前端开源库-happner-2HAPPNER-2,具有事件存储和网格服务的分布式应用程序引擎
  • 前端开源库-qp-library

    2019-08-30 02:11:50
    前端开源库-qp-libraryqp库,javascript实用程序对象库。
  • 使用golang开发web服务器,响应web端的请求。前后端的通信使用websocket

    前言

            使用go语言开发web服务器时,常常需要web端发送请求给服务端,如果碰到需要长连接的情况,服务端处理http请求往往占用大量资源,而websocket则能使web端和服务端维持长连接。除此之外,建立长连接亦可以使服务端主动向web端推送消息,从而为项目提供更加丰富的功能。

            本文面向初次使用go开发web服务端的读者,建立并完成一个完整的web端与服务端实时通信项目。并在文章末尾贴出了开发中的踩坑点,供初学者参考。

    环境

    OS:Windows 10 专业版(21H1)

    编辑器:vscode

    服务端:Go(1.17)

    web端:HTML5+JavaScript

    浏览器:Edge

    正文

    目标:

            web端发起websocket连接,服务端侦听到连接,并处理前端的请求。

    背景:

            JavaScript完全支持完整的websocket通信,仅需要使用相应函数即可实现通信需求;

            golang对websocket无原生支持,需要以将通信发起之初的http连接升级为websocket连接,其原理相关介绍很多,由于需求场景很多,golang有维护较好的第三方库可供方便使用,本文仅针对需快速实现连接功能需求的读者参考。

    前端

    目标:

            一个显示服务器时间的段落,一个触发websocket连接的按钮

    代码:

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <title>TestWebsocket</title>
    
        <script type="text/javascript">
            function LinkServer() {
                // 声明连接
                var Server_Com;
                if ("WebSocket" in window) {
                    Server_Com = new WebSocket("ws://127.0.0.1:13000/getTime");
                    console.log("新建连接到->127.0.0.1:13000");
                }
    
                // 建立连接后发送
                Server_Com.onopen = function() {
    
                    Server_Com.send("Hello Server!"); // Web Socket 已连接上,使用 send() 方法发送数据
                    console.log("已连接上服务器");
                }
    
                // 接收服务器消息
                Server_Com.onmessage = function(event) {
                    var recv_msg = event.data;
    
                    if (recv_msg == "Hello Client!") {
                        console.log("接收到服务器的问候: " + recv_msg); // 用于提示收到信息
                    } else {
                        document.getElementById("Time").textContent = recv_msg; // 实时更新显示服务器发回的时间
                        console.log("接收到服务器数据: " + recv_msg);
                    }
                }
            }
        </script>
    </head>
    
    <body>
        <p>服务器时间:</p>
        <p id="Time">2022-03-02 20:00:00</p>
    
        <button onclick="LinkServer()">连接</button>
    
    </body>
    
    </html>

    按F12可显示console.log内容。

    服务器

    目标:

            监听web发来的请求,升级为websocket通讯协议,发送打招呼信息,循环发送当前时间

    golang的官方websocket库未得到很好的维护,且功能及稳定性不如第三方开源的gorilla 

    golang原生支持http连接,websocket连接从http连接升级而来,每次创建websocket连接前,需要首先升级在http连接上,之后可维持websocket连接。

     golang需要使用http.HandleFunc来开启http监听,它将在收到http请求后执行函数。同时,升级websocket连接也需要在函数开始执行后才能创建。所以在go中会有net/http包来分配及启动监听,gorrila/websocket包来创建websocket连接。

    代码:

    package main
    
    import (
    	"fmt"
    	"net/http"
    	"time"
    
    	"./websocket-master" // "github.com/gorrila/websocket"连接不上,我直接下载了源码
    )
    
    var upgrader = websocket.Upgrader{
    	// 解决跨域问题
    	CheckOrigin: func(r *http.Request) bool {
    		return true
    	},
    }
    
    func main() {
    
    	// 注册服务器事件
    	http.HandleFunc("/getTime", SendTime) // 支持多端同时访问,相当于收到不同请求后未每个请求分别创建线程处理
    	fmt.Println("已向 DefaultServeMux 注册 SendTime 事件")
    
    	// 打开要侦听的前端请求连接端口
    	err := http.ListenAndServe(":13000", nil) // 这里是接受对本机所有的通过13000的请求,本机有多个IP则可在端口号前加IP地址区分,如"10.11.100.123:13000"
    	if err != nil {
    		fmt.Println("端口侦听错误:", err)
    	}
    
    }
    
    func SendTime(w http.ResponseWriter, r *http.Request) {
    	c, err := upgrader.Upgrade(w, r, nil)
    	if err != nil {
    		fmt.Print("升级websocket连接错误:", err)
    		return
    	}
    
    	defer c.Close()
    
    	// 接受消息
    	mt, message, err := c.ReadMessage()
    	if err != nil {
    		fmt.Println("接收错误:", err)
    	} else {
    
    		fmt.Println("接收到前端消息:", string(message))
    
    		// 发送问候
    		var sendbuff string = "Hello Client!"
    		c.WriteMessage(mt, []byte(sendbuff)) // 为阅读方便,省去错误处理
    
    		// 不停地循环发送时间
    		fmt.Println("开始发送时间")
    		for {
    			sendbuff = time.Now().Format("2006-01-02 15:04:05")
    			err = c.WriteMessage(mt, []byte(sendbuff))
    			if err != nil {
    				fmt.Println("发送错误:", err)
    				break
    			}
    
    			fmt.Println("发送时间:", sendbuff)
    			time.Sleep(1 * time.Second) // 间隔1s,降低资源消耗,如果想提高实时性可减少时间间隔
    		}
    
    		fmt.Println("停止发送时间")
    	}
    }
    

    测试

           先启动服务器,再打开test.html并打开调试,点击网页上的“连接”按钮,观察控制台与服务器运行窗口(这里是vscode的集成终端)。

    浏览器显示

    服务器运行

     

    踩坑


    问题表现:

    • 前端发起请求后没有任何响应

    问题细节:

    • web端发出了websocket连接请求,浏览器控制台显示failed

             

    • 服务端没有任何提示 

    问题原因:

    web端的websocket参数与服务端不一致,请求的连接没有触发服务端的事件响应

    • 服务端的问题代码及修改:
    http.HandleFunc("/echo", echo)  
    // 函数的第一个传入参数为事件名称(从http请求中读取),第二个传入参数为事件
    // 事件名称默认为"/"
    
    // 函数格式(附):
    func http.HandleFunc(pattern string, handler func(http.ResponseWriter, *http.Request))
    • web端的代码:
    // 原始代码
    Server_Com = new WebSocket("ws://127.0.0.1:12033");
    

    解决:

    修改服务端或web端代码均可,以使两端事件统一

    • 服务端修改:
    // 修改为
    http.HandleFunc("/", echo)  
    • web端修改:
    // 修改
    Server_Com = new WebSocket("ws://127.0.0.1:12033/echo");
    展开全文
  • 前端开源库-react-isomorphic-renderReact同构渲染,使用React、Redux、React Router和Redux Router进行同构渲染。包括对Webpack的支持
  • 前端开源库-node-red-habanero节点RedHabanero,一个连接物联网的可视化工具
  • 前端开源库-node-red-custom节点红色自定义,小位自定义节点红色
  • 前端开源库-teeleader-socketstream-2teelider-socketstream-2,一个快速的模块化node.js框架,专门用于构建实时单页应用程序
  • 常用websocket开源

    2022-05-07 09:35:53
    除了可以在前端开发的JavaScript 中使用 WebSocket 之外,我们也可以在 Java、C++、Go、Rust 等编程语言平台中使用 WebSocket。 我汇总整理了8款目前常用的websocket开源框架,都是比较优秀的websocket库,大家可以...
  • 前端 websocket长连接请求数据

    千次阅读 2020-09-21 18:11:49
    前端 websocket长连接,前端实现方法,需后台配合 定义在methods的方法 getSoket(){ let that = this; let socket; if(typeof(WebSocket) == "undefined") { console.log("您的浏览器不支持WebSocket"); }else{...
  • 介绍 websocket可以在用户的浏览器和服务器之间打开交互式通信会话,使用websocket可以向服务器发送消息并接收事件驱动的响应,而无需...首先介绍一下前端websocket一些基本接口。 Websocket API 实例化 let socket...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,174
精华内容 4,069
关键字:

websocket前端开源