Skip to content
/ bifrost Public

A powerful WebSocket tunnel to transfer HTTP over WebSocket.

License

Notifications You must be signed in to change notification settings

wenchy/bifrost

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bifrost

A powerful websocket tunnel to transfer HTTP over Websocket.

Features

  • Support HTTP 1.x
  • Duplex communication
  • Automatic reconnection
  • Compression: gzip
  • Encryption: AES
  • WebSocket Secure: wss, refer https://github.com/denji/golang-tls
  • Chunked transfer encoding(specially for large file transfers)
  • Support HTTP2
  • Support websocket, which means Websocket over Websocket
  • Mutiple websocket connection tunnels, improve transmission performance

Installation

  • bin: go get -u github.com/Wenchy/bifrost/cmd/bifrost
  • conf: wget https://raw.githubusercontent.com/Wenchy/bifrost/master/cmd/bifrost/conf.yaml
  • script: wget https://raw.githubusercontent.com/Wenchy/bifrost/master/cmd/bifrost/startstop.sh

Usage

Configuration

cmd/bifrost/conf.yaml

server:
  self_addr: :9098
  peer_addr: ws://localhost:9099/ws
proxies:
  - path: /*
    target: http://localhost
log:
  level: debug # debug, info, warn, error
  dir: ./logs # log directory  

Extended custom HTTP Headers

X-Bifrost-Target

This field directs the forwarded target to the websocket tunnel's peer side, it is like the proxy_pass director in Nginx. If this header field is set, the proxies item in conf.yaml will not be taken into consideration.

e.g.: X-Bifrost-Target: https://www.google.com

Run as daemon

script: cmd/bifrost/startstop.sh

Action Command
Start ./startstop start
Stop ./startstop stop
Restart ./startstop restart

References

About

A powerful WebSocket tunnel to transfer HTTP over WebSocket.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published