HTTP, HTTP2, HTTPS, Websocket debugging proxy

Overview

English | 简体中文

whistle logo

We recommend updating whistle and Node to ensure that you receive important features, bugfixes and performance improvements. Some versions of Node have bugs that may cause whistle to not work properly, for detail see the issue: #231

whistle

NPM version node version build status Test coverage npm download NPM count License

中文 README

whistle is a cross-platform web debugging tool based on Node.js.

It features the following:

  1. offer HTTP proxying
  2. capture, replay or compose requests of HTTP, HTTPS, WebSocket and TCP.
  3. manipulate http request and response by configing hosts, or patterns like domain, path, regular expression, wildcard characters, wildcard path, etc.
  4. offer build-in mobile debugging mode

If the aboves can't satisfy your requirements, you can also use plugins to extend its capabilities.

The specific functions are as follows:

specific functions

Manipulations to http request and response in whistle can be achieved as a Rule looks like:

pattern operatorURI

Description:

  1. pattern is an expression to match the target request url. You can write patterns in different forms including domain, path, regular expression, wildcard, and so on.

     # matching domain
     www.example.com
     # domain with port
     www.example.com:6666
     # domain with protocol, supporting http, https, ws, wss, tunnel
     http://www.example.com
    
     # matching path, supporting protocol, port
     www.example.com/test
     https:/www.exapmle.com/test
     https:/www.exapmle.com:6666/test
    
     # matching regular expression
     /^https?://www\.example\.com\/test/(.*)/ referer://http://www.test.com/$1
    
     # matching wildcard
     ^www.example.com/test/*** referer://http://www.test.com/$1
    

    For more details, please visit Pattern Matching

  2. operatorURI is the corresponding operation, made up of opProtocol and opValue:
    opProtocol represents the kind of operation, e.g.

     # host:setting requested server IP
     pattern host://opValue
    
     # file:using the local file to replace
     pattern file://opValue
    

    opValue represents the parameters of the specific operation, e.g.

     # host:setting requested server IP
     pattern host://127.0.0.1:6666 # or pattern 127.0.0.1:6666	
    
     # file:using the local file to replace
     pattern file:///User/test/dirOrFile # or pattern /User/test/dirOrFile
     pattern file://E:\test\dirOrFile # or pattern E:\test\dirOrFile
    

    For more details, please visit operation value

  3. The position of pattern and operatorURI can be swapped in most situations while the combination mode is also supported. For more details, please visit configuration mode

Install & Setup

install Node

The latest LTS version of Node.js is recommended.

If none or low version of Node.js is installed, you need install the latest version of Node.js according to the following instructions:

  1. For Windows: please visit https://nodejs.org/ to download the latest LTS version of Node.js and then, install it using the default options.

  2. For Mac: the same as Windows.

  3. For Linux: using source code to install is recommended, because in this way, you don't need to configure the path.  If you fail to install with source code, you can also use the binary version of Node.js directly.

    • with source package: visit Official website of Node to download the latest version of Source Code*(or using wget in shell), unzip(tar -xzvf node-xxx.tar.gz), switch to the root directory(cd node-xxx), execute ./configure, ./make and ./make install in order。
    • using binary version:visit Official website of Node to download the latest Linux Binaries(or using command wget to download), unzip(tar -xzvf node-xxx.tar.gz), add the absolute path of bin directory to system PATH after extracting。

You can execute node -v in shell to check if the expected version of Node.js is installed successfully:

$ node -v
v8.9.4

install whistle

After the Node.js is installed successfully, you can execute the following npm command to install whistle(In Mac or Linux, prefix sudo is needed if you are not root user, i.e. sudo npm install -g whistle

npm install -g whistle

In China, you can install whistle using npm mirror of taobao to speed up installing progress and avoid failure:

npm install cnpm -g --registry=https://registry.npm.taobao.org
cnpm install -g whistle

or specify mirror install directly:
npm install whistle -g --registry=https://registry.npm.taobao.org

After installation, execute whistle help or w2 help to view help information:

$ w2 help
Usage: whistle <command> [options]


Commands:

	run       Start a front service
	start     Start a background service
	stop      Stop current background service
	restart   Restart current background service
	help      Display help information

Options:

	-h, --help                                      output usage information
	-D, --baseDir [baseDir]                         the base dir of config data
	-z, --certDir [directory]                       custom certificate path
	-l, --localUIHost [hostname]                    local ui host (local.whistlejs.com by default)
	-n, --username [username]                       the username of whistle
	-w, --password [password]                       the password of whistle
	-N, --guestName [username]                      the guest name
	-W, --guestPassword [password]                  the guest password
	-s, --sockets [number]                          max sockets (60 by default)
	-S, --storage [newStorageDir]                   the new local storage directory
	-C, --copy [storageDir]                         copy storageDir to newStorageDir
	-c, --dnsCache [time]                           the cache time of DNS (30000ms by default)
	-H, --host [host]                               whistle listening host(:: or 0.0.0.0 by default)
	-p, --port [port]                               whistle listening port (8899 by default)
	-P, --uiport [uiport]                           whistle ui port (8900 by default)
	-m, --middlewares [script path or module name]  express middlewares path (as: xx,yy/zz.js)
	-M, --mode [mode]                               the whistle mode (as: pureProxy|debug|multiEnv)
	-t, --timeout [ms]                              request timeout (66000 ms by default)
	-e, --extra [extraData]                         extra data for plugin
	-f, --secureFilter [secureFilter]               the script path of secure filter
	-R, --reqCacheSize [reqCacheSize]               the cache size of request data (512 by default)
	-F, --frameCacheSize [frameCacheSize]           the cache size of socket frames (512 by default)
	-V, --version                                   output the version number

Setup whistle

Start:

w2 start

Note: If you don't want others to visit the configuration page of whistle, just add username and password when start, i.e. -n yourusername -w yourpassword

Restart:

w2 restart

Stop:

w2 stop

Debugging mode:

w2 run

For more details, please visit install and start

Proxing Settings

configuring server & port
  1. proxying server:127.0.0.1(if whistle is deployed in remote server or virtual machine, change this address to corresponding IP address)
  2. default port:8899(if port 8899 is used already, you can specify new port using -p when start. More details can be visited by executing whistle help or w2 help (only supported in v0.7.0 and higher version)

Make sure using the same proxying server for all protocol in system proxying setting is checked.

Browser & System configuration
  1. proxy setting in OS: 
  1. proxy setting in browser(recommended)

    • for Chrome:intall chrome plugin whistle-for-chrome or Proxy SwitchySharp

    • for Firefox: Open Options page in Firefox, then switch to General -> Network Proxy, then set Manual proxy configuration to whistle.

  2. in mobiles, configure the proxy of current Wi-Fi in Setting

PS: The mobile may failed to use network after configuration because the fireworks of the PC has forbidden remote visit to the whistle's port. you can try to close the fireworks or configure white list : http://jingyan.baidu.com/article/870c6fc317cae7b03ee4be48.html

For more details, please vsit install and start

Visit whistle's operation page

After the above steps are completed, open the whistle page in browserhttp://local.whistlejs.com

whistle webui

There are five main tabs in the navigation bar:

  1. Network
  • check and compose the http request
  • show the console print and javascript errors thrown in pages
  1. Rules:configure rules for manipulating
  2. Plugins
  • show the list of installed plugins
  • enable or disable installed plugins
  1. Weinre:configure Weinre list
  2. HTTPS:
    • configure whether or not to intercept the HTTPS and download the root certificate for whistle

Certificate Installment

Please install root certificate and enable HTTPS interception before using whislte.

For more details, please vsit Certificate Installment

Quick start

Open Rules tab in whistle, and create a group named test by context menu or Create button in menu bar. Then follow the next steps to write rules and save.

  1. cofigure hosts

    Specify the ip of www.ifeng.com:

     www.ifeng.com 127.0.0.1
     # or
     127.0.0.1 www.ifeng.com
    

    Specify the ip and port of www.ifeng.com to forward http request to local port 8080. In this way, we can visit the local website just as online when the developing port is not 80:

     # www.ifeng.com 127.0.0.1
     www.ifeng.com 127.0.0.1:8080
     # or
     127.0.0.1:8080 www.ifeng.com
    

    We can also replace the real IP (or domain) and port with any domain without port:

     www.ifeng.com host://www.qq.com:8080
     # or
     host://www.qq.com:8080 www.ifeng.com
    

    For more details, please visit Pattern Matching

  2. local files replacing

Replace the response with content in local file system, which is frequently used during web developing.

# Mac or Linux
www.ifeng.com file:///User/username/test
# or www.ifeng.com file:///User/username/test/index.html
	
# Both '\' and '/' can be used as path separator for Widows
www.ifeng.com file://E:\xx\test
# or www.ifeng.com file://E:\xx\test\index.html

http://www.ifeng.com/ will try to load /User/username/test first. If the former dosen't exist, the file /User/username/test/index.html will be loaded. For neither exists, it returns 404.

To replace jsonp request, you can refer to tpl

For more details, please vsit Pattern Matching

  1. Request Forward

    To forward all the requests from domain www.ifeng.com to domain www.aliexpress.com

     www.ifeng.com www.aliexpress.com
    

    For more details, Pattern Matching

  2. Inject html、js、css

    whistle will decide whether injecting corresponding text and how to inject, like whether wrapping the text with HTML label, automatically according to response type.

     # Mac、Linux
     www.ifeng.com html:///User/xxx/test/test.html
     www.ifeng.com js:///User/xxx/test/test.js
     www.ifeng.com css:///User/xxx/test/test.css
     
     # Both '\' and '/' can be used as path separator for Widows
     www.ifeng.com html://E:\xx\test\test.html
     www.ifeng.com js://E:\xx\test\test.js
     www.ifeng.com css://E:\xx\test\test.css
    

    For all the requests for domain www.ifeng.com, whistle will inject the processed text to response body according to response type. If the type is HTML, the js content will be wrapped within script, and the css content be wrapped within style to be injected to response body。

    For more details, Pattern Matching

  3. Debug for remote page

    With the protocol weinre and protocol log provided by whistle, you can modify the DOM structure, capture the javascript errors and view the console print easily. Moreover, you can inject specified script to debug the remote page.

    Before using whistle to debug remote page, you need to set the proxy for OS or browser to whistle. Please refers Install and start to know how to set the proxy.

    For weinre:

     www.ifeng.com weinre://test
    

    Add the following rule in group named test and save, open the www.ifeng.com with a new tab in browser. Then you can see a list when you hover over the button weinre, click the item test to open a weinre debug page. For example, you can see the DOM structure when swich to Elements tab after selected a target.

    For log:

     www.ifeng.com log://{test.js}
    

    Add the following rule in group named test and save. Then you can see a list when you hover over the button Values, whistle will create a group named test.js in Values when you click it. Input the text console.log(1, 2, 3, {a: 123}) in the group editor, open the Network -> Log -> Console, open the www.ifeng.com, you can see the output '1, 2, 3, {a: 123}' in Console panel.

    For more details, Pattern Matching and Rules

Documentation

  1. Install and start
  2. CLI operation
  3. How to update
  4. Quickly start
  5. Configuration mode
  6. Pattern Matching
  7. Operation value
  8. Frequent functions
  9. How to develop plugins
  10. Attentions
  11. Common questions
  12. Web UI
  13. Rules
  14. Feedback

License

MIT

Issues
  • 像下面nginx这样转发怎么配置?

    像下面nginx这样转发怎么配置?

        location  ~.*\.(gif|jpg|jpeg|png|bmp|swf|ico|js|css|html)$
        {
            root   html;
            proxy_pass http://127.0.0.1:8080;
        }
        location / {
            root   html;
            proxy_pass http://192.168.30.118:8877;
    
    
        }
    
    opened by a526672351 17
  • 支持 https 降级代理

    支持 https 降级代理

    平时我配置代理都是 ip domain 形式滴

    类似这种形式

    10.2.3.4 test.github.com
    

    如果访问 http://test.github.com 这个很正常,可以正确得到需要的东西,因为访问了 10.2.3.480 端口

    但是如果访问 https://test.github.com 就不正常了,这个时候 whistle 自动去访问了 10.2.3.4443 端口,但是因为内网机器上是不会部署证书滴,而且也只开放 80 端口

    所以我加了一个全局的 rule

    /^https:\/\/(.*)/i http://$1
    

    这样就可以 hack 把 443 端口强制改成访问 80 端口了

    但是问题来了,如果我想设置其他 rule 就不行了

    因为 rule 只能存在一个,所以就很麻烦

    如果你要让 https 降级 rule,就没办法自定义其他 rule 了

    如果要自定义 rule 就必须带上 https 转换,https -> http

    所以看一下这边有没有办法弄一个方法可以既满足 https 转 http,并且也支持自定义 rule

    opened by maxming2333 17
  • 有没有插件Hook能直接返回我response的数据?

    有没有插件Hook能直接返回我response的数据?

    我开发插件的需求目的很简单,就是让请求之后替换一些html内容,但是我看到插件的文档和实例(mock,script)真的好麻烦好麻烦。

    也许我不了解node http的缘故,但我真的希望能提供一个hook给我,然后处理完的body内容返回就可以!

    opened by xiaobebe 16
  • https是否可以自定义客户端证书

    https是否可以自定义客户端证书

    对于双向验证的https, 服务器会验证客户端证书,whistle发送https请求时,可以发送自定义的证书吗?

    feature 
    opened by VeryLazyBoy 16
  • 做了一个快速切换 Whistle 规则的插件,欢迎试用

    做了一个快速切换 Whistle 规则的插件,欢迎试用

    opened by Quilljou 15
  •  手机代理后浏览器就打不开页面了

    手机代理后浏览器就打不开页面了

    mac电脑 安卓手机 两个设备同一网络下 手机配置了代理之后无法访问页面

    opened by tangyuan4ou 15
  • 没有走系统的DNS缓存,导致大量的DNS服务器请求

    没有走系统的DNS缓存,导致大量的DNS服务器请求

    我们部署在公司内网的服务器,导致了对DNS服务器大量的请求,请问为什么没有走本地的DNS缓存?

    opened by lndj 14
  • [建议]能否将抓取到的请求结果按http路径树展示

    [建议]能否将抓取到的请求结果按http路径树展示

    好吧,我就是想要一个类似charles的请求展示功能, 有些页面有轮询接口,一会想要的请求就刷没了

    discuss 
    opened by boafantasy 13
  • 建议可以通过brew安装

    建议可以通过brew安装

    如题,由于目前大多数人都是用nvm管理Node,如果要频繁切换node版本的话,会很麻烦

    opened by dashixiong91 13
  • mac配置开机自启错误。

    mac配置开机自启错误。

    image 打开whistle App是报以上错误。

    opened by joker77877 0
  • 页面301永久重定向,使用代理页面无法加载

    页面301永久重定向,使用代理页面无法加载

    问题描述: app内嵌h5页面,页面路径后端nginx做了301永久重定向到新的域名地址,此时使用whistle抓包工具页面空白无法打开,关闭代理正常加载。

    期望: 能正常打开301的页面,并能抓包

    opened by Panfen 5
  • ios wifi连代理,好像websocket没代理到?

    ios wifi连代理,好像websocket没代理到?

    这个要怎么处理?

    help wanted 
    opened by B1anker 13
  • [Feature Request] whislte 支持 verbose 参数或环境变量,显示性能数据

    [Feature Request] whislte 支持 verbose 参数或环境变量,显示性能数据

    image

    这样在用户可以通过

    VERBOSE=1 w2 run 或 w2 run --verbose
    

    启动 whistle,每当 whistle 代理一个匹配中规则的请求时,可以在控制台直接打印性能数据。 一个可能的实现如下:

    https://github.com/avwo/whistle/pull/632/files#diff-690601aa16ece35c1983ef810a10ad3a3be292a1b2732cc8dc3642f4709f1516R1

    opened by lolimay 3
  • 建议values编辑器增加语言选择和json折叠功能

    建议values编辑器增加语言选择和json折叠功能

    1. 建议values编辑器增加语言选择 如 javascript, json, yaml, xml , markdown等,切换语言时,自动高亮
    2. 对于返回数据特别长的情况下,现在查找功能有点弱,查找很不方便,也不能折叠,不如直接在编辑器部分增加个工具栏,希望有个按缩进折叠或者语法折叠
    3. values和rules支持分组,方便管理,现在只能是以名称前辍来做类似分组,但名字一长就不好搞了
    feature 
    opened by mooring 4
  • chore(deps-dev): bump codemirror from 5.5.0 to 5.58.2

    chore(deps-dev): bump codemirror from 5.5.0 to 5.58.2

    Bumps codemirror from 5.5.0 to 5.58.2.

    Release notes

    Sourced from codemirror's releases.

    5.58.2

    No release notes provided.

    5.58.1

    Version 5.58.1

    Bug fixes

    placeholder addon: Remove arrow function that ended up in the code.

    5.58.0

    Version 5.58.0

    Bug fixes

    Make backspace delete by code point, not glyph.

    Suppress flickering focus outline when clicking on scrollbars in Chrome.

    Fix a bug that prevented attributes added via markText from showing up unless the span also had some other styling.

    Suppress cut and paste context menu entries in readonly editors in Chrome.

    placeholder addon: Update placeholder visibility during composition.

    New features

    Make it less cumbersome to style new lint message types.

    vim bindings: Support black hole register, gn and gN

    5.57.0

    Version 5.57.0

    Bug fixes

    Fix issue that broke binding the macOS Command key.

    comment addon: Keep selection in front of inserted markers when adding a block comment.

    css mode: Recognize more properties and value names.

    annotatescrollbar addon: Don't hide matches in collapsed content.

    New features

    vim bindings: Support tag text objects in xml and html modes.

    ... (truncated)

    Changelog

    Sourced from codemirror's changelog.

    5.58.2 (2020-10-23)

    Bug fixes

    Fix a bug where horizontally scrolling the cursor into view sometimes failed with a non-fixed gutter.

    julia mode: Fix an infinite recursion bug.

    5.58.1 (2020-09-23)

    Bug fixes

    placeholder addon: Remove arrow function that ended up in the code.

    5.58.0 (2020-09-21)

    Bug fixes

    Make backspace delete by code point, not glyph.

    Suppress flickering focus outline when clicking on scrollbars in Chrome.

    Fix a bug that prevented attributes added via markText from showing up unless the span also had some other styling.

    Suppress cut and paste context menu entries in readonly editors in Chrome.

    placeholder addon: Update placeholder visibility during composition.

    New features

    Make it less cumbersome to style new lint message types.

    vim bindings: Support black hole register, gn and gN

    5.57.0 (2020-08-20)

    Bug fixes

    Fix issue that broke binding the macOS Command key.

    comment addon: Keep selection in front of inserted markers when adding a block comment.

    css mode: Recognize more properties and value names.

    annotatescrollbar addon: Don't hide matches in collapsed content.

    New features

    vim bindings: Support tag text objects in xml and html modes.

    ... (truncated)

    Commits
    • 264022e Mark version 5.58.2
    • 23b7a99 Add WebAssembly to meta
    • 212bafa [stylus mode] Recognize "url-prefix" token properly
    • 9885241 [javascript mode] Don't indent in template strings
    • 9caacec [sparql mode] Improve parsing of IRI atoms
    • 55d0333 [javascript mode] Fix potentially-exponential regexp
    • cdb228a Fix horizontal scrolling-into-view with non-fixed gutters
    • 1cb6de2 Fix doc/releases.html copy-paste mistake
    • 719a912 Fixes #6402. Adds option to turn off highlighting of non-standard CSS properties
    • 8bc57f7 Remove link to gitter room
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • [feature]能否支持一键开启全局代理配置

    [feature]能否支持一键开启全局代理配置

    背景

    目前使用 whistle 需要配合浏览器的代理插件使用,只能抓包浏览器请求,但如果想抓包其他软件,只能手动配置系统的网络代理

    期望

    希望 localhost:8899 whistle 管理平台支持一键开启/关闭系统代理功能

    解决方案

    目前了解到 win 下有个小工具可以通过指令开启/关闭代理,可以参考下[小工具链接] 手头没 mac,需要平台调研下了

    opened by henrycjchen 8
  • 建议在rules和values增加分组显示

    建议在rules和values增加分组显示

    rules和values数据多了的时候特别难找,建议: 1.增加分组显示 2.可收起/展开分组

    feature 
    opened by linfuxiang 1
Owner
avenwu
团队大量招前端,简历发我邮箱
avenwu
Local Portable HTTP/HTTPS Proxy

SkelgoKey Portable Local Web Proxy - Creates a local proxy that bypasses any network certificate checks - USAGES Windows .\SkeletonKey.exe (web addres

null 1 Oct 13, 2021
Swiss Army knife Proxy tool for HTTP/HTTPS traffic capture, manipulation, and replay on the go.

Features • Installation • Usage • Running Proxify • Installing SSL Certificate • Applications of Proxify • Join Discord Swiss Army Knife Proxy for rap

ProjectDiscovery 1.4k Nov 29, 2021
websocket proxy,简单的websocket反向代理实现,支持ws、wss

websocket proxy 100行代码实现轻量的websocket代理库,不依赖其他三方库,支持ws、wss代理 使用示例 Install go get github.com/pretty66/websocketproxy import ( "github.com/pretty66/w

null 8 Nov 22, 2021
Websocket proxy component

Proxy server component Task description Task description is in DESCRIPTION.md Issues found in task description and fixed signal.Notify wasn't cathing

Alex 1 Nov 1, 2021
A simple tool to convert socket5 proxy protocol to http proxy protocol

Socket5 to HTTP 这是一个超简单的 Socket5 代理转换成 HTTP 代理的小工具。 如何安装? Golang 用户 # Required Go 1.17+ go install github.com/mritd/[email protected] Docker 用户 docker pull m

mritd 3 Nov 2, 2021
A suite of gRPC debugging tools. Like Fiddler/Charles but for gRPC.

grpc-tools A suite of tools for gRPC debugging and development. Like Fiddler/Charles but for gRPC! The main tool is grpc-dump which transparently inte

Bradley Kemp 992 Dec 2, 2021
开箱即用的基于命令的消息处理框架,让 websocket 和 tcp 开发就像 http 那样简单

Cmd Srv 开箱即用的基于命令的消息处理框架,让 websocket 和 tcp 开发就像 http 那样简单

Eyas 19 Nov 8, 2021
MOSN is a cloud native proxy for edge or service mesh. https://mosn.io

中文 MOSN is a network proxy written in Golang. It can be used as a cloud-native network data plane, providing services with the following proxy functio

MOSN 3.4k Dec 1, 2021
inlets-connect is a proxy that supports HTTPS and the CONNECT method

inlets-connect inlets-connect is a proxy that supports HTTPS and the CONNECT method. It can be deployed as a side-car or stand-alone to proxy to a sin

Alex Ellis 9 Jul 19, 2021
An experimental Tor-Proxy serivce written in Go using Go-proxy and Go-libtor.

tor-proxy An experimental standalone tor-proxy service built with Go, using go-proxy, go-libtor and bine. This is a simple replacement to Tor's origin

Narasimha Prasanna HN 32 Oct 15, 2021
mt-multiserver-proxy is a reverse proxy designed for linking multiple Minetest servers together

mt-multiserver-proxy mt-multiserver-proxy is a reverse proxy designed for linking multiple Minetest servers together. It is the successor to multiserv

null 7 Nov 27, 2021
Super fault-tolerant gateway for HTTP clusters, written in Go. White paper for reference - https://github.com/gptankit/serviceq-paper

ServiceQ ServiceQ is a fault-tolerant gateway for HTTP clusters. It employs probabilistic routing to distribute load during partial cluster shutdown (

Ankit Gupta 57 Nov 17, 2021
Compiler as a Service is a compiler that is available over http/https and gRPC

BlakBoks(CaaS) Elasticsearch but for compiling untrusted code Compiler as a Service is a compiler that is available over http/2 and gRPC. Setup First

Nathan Kimutai 0 Nov 24, 2021
go websocket, a better way to buid your IM server

Your star is my power!! ?? ⭐ ⭐ ⭐ ⭐ ⭐ Discribe lhttp is a http like protocol using websocket to provide long live, build your IM service quickly scalab

中弈 635 Nov 19, 2021
Minimal and idiomatic WebSocket library for Go

websocket websocket is a minimal and idiomatic WebSocket library for Go. Install go get nhooyr.io/websocket Highlights Minimal and idiomatic API First

Anmol Sethi 2k Dec 2, 2021
A modern, fast and scalable websocket framework with elegant API written in Go

About neffos Neffos is a cross-platform real-time framework with expressive, elegant API written in Go. Neffos takes the pain out of development by ea

Gerasimos (Makis) Maropoulos 374 Dec 3, 2021
WebSocket Connection Smuggler

ws-smuggler ws-smuggler is websocket connection smuggling testing tool. It is similar to the this project, but it has been rewritten based on the web

HAHWUL 35 Nov 17, 2021
This package helps establish a websocket connection to the bilibili streaming server.

biliStreamClient This package helps establish a websocket connection to the bilibili streaming server. bilibili直播弹幕的WebSocket协议分析请参考:https://blog.csdn

JINGWEI ZHANG 19 Aug 27, 2021
High-performance, non-blocking, event-driven, easy-to-use networking framework written in Go, support tls/http1.x/websocket.

High-performance, non-blocking, event-driven, easy-to-use networking framework written in Go, support tls/http1.x/websocket.

lesismal 405 Dec 4, 2021