websocket

package module
v0.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 25, 2022 License: Apache-2.0, MIT Imports: 7 Imported by: 72

README

DEPRECATION NOTICE

This package has moved into go-libp2p as a sub-package, github.com/libp2p/go-libp2p/p2p/transport/websocket.

go-ws-transport

Discourse posts GoDoc Coverage Status Build Status

A libp2p transport implementation using WebSockets

go-ws-transport is an implementation of the libp2p transport interface that streams data over WebSockets, which are themselves layered over TCP/IP. It is included by default in the main go-libp2p "entry point" module.

Table of Contents

Install

go-ws-transport is included as a dependency of go-libp2p, which is the most common libp2p entry point. If you depend on go-libp2p, there is generally no need to explicitly depend on this module.

go-ws-transport is a standard Go module which can be installed with:

> go get github.com/libp2p/go-ws-transport

This repo is gomod-compatible, and users of go 1.11 and later with modules enabled will automatically pull the latest tagged release by referencing this package. Upgrades to future releases can be managed using go get, or by editing your go.mod file as described by the gomod documentation.

Usage

WebSockets are one of the default transports enabled when constructing a standard libp2p Host, along with TCP.

Calling libp2p.New to construct a libp2p Host will enable the WebSocket transport, unless you override the default transports by passing in Options to libp2p.New.

To explicitly enable the WebSocket transport while constructing a host, use the libp2p.Transport option, passing in the ws.New constructor function:


import (
    libp2p "github.com/libp2p/go-libp2p"
    ws "github.com/libp2p/go-ws-transport"
)

// WebSockets only:
h, err := libp2p.New(
    libp2p.Transport(ws.New)
)

The example above will replace the default transports with a single WebSocket transport. To add multiple tranports, use ChainOptions:

// WebSockets and QUIC:
h, err := libp2p.New(
    libp2p.ChainOptions(
        libp2p.Transport(ws.New),
        libp2p.Transport(quic.NewTransport)) // see https://github.com/libp2p/go-libp2p-quic-transport
)

Addresses

The WebSocket transport supports multiaddrs that contain a ws component, which is encapsulated within (or layered onto) another valid TCP multiaddr.

Examples:

addr description
/ip4/1.2.3.4/tcp/1234/ws IPv4: 1.2.3.4, TCP port 1234
/ip6/::1/tcp/1234/ws IPv6 loopback, TCP port 1234
/dns4/example.com/tcp/80/ws DNS over IPv4, hostname example.com, TCP port 80

Notice that the /ws multiaddr component contextualizes an existing TCP/IP multiaddr and does not require any additional addressing information.

Security and Multiplexing

While the WebSocket spec defines a wss URI scheme for encrypted WebSocket connections, support for wss URIs relies on TLS, which wraps the WebSocket connection in a similar manner to TLS-protected HTTP traffic.

As libp2p does not integrate with the TLS Certificate Authority infrastructure by design, security for WebSockets is provided by a transport upgrader. The transport upgrader negotiates transport security for each connection according to the protocols supported by each party.

The transport upgrader also negotiates a stream multiplexing protocol to allow many bidirectional streams to coexist on a single WebSocket connection.

Contribute

Feel free to join in. All welcome. Open an issue!

This repository falls under the libp2p Code of Conduct.

Want to hack on libp2p?

License

MIT


The last gx published version of this module was: 2.0.27: QmaSWc4ox6SZQF6DHZvDuM9sP1syNajkKuPXmKR1t5BAz5

Documentation

Overview

Package websocket implements a websocket based transport for go-libp2p. Deprecated: This package has moved into go-libp2p as a sub-package: github.com/libp2p/go-libp2p/p2p/transport/websocket.

Index

Constants

This section is empty.

Variables

View Source
var GracefulCloseTimeout = websocket.GracefulCloseTimeout

GracefulCloseTimeout is the time to wait trying to gracefully close a connection before simply cutting it. Deprecated: use github.com/libp2p/go-libp2p/p2p/transport/websocket.GracefulCloseTimeout instead.

WsFmt is multiaddr formatter for WsProtocol Deprecated: use github.com/libp2p/go-libp2p/p2p/transport/websocket.WsFmt instead.

Functions

func ConvertWebsocketMultiaddrToNetAddr deprecated

func ConvertWebsocketMultiaddrToNetAddr(maddr ma.Multiaddr) (net.Addr, error)

Deprecated: use github.com/libp2p/go-libp2p/p2p/transport/websocket.ConvertWebsocketMultiaddrToNetAddr instead.

func ParseWebsocketNetAddr deprecated

func ParseWebsocketNetAddr(a net.Addr) (ma.Multiaddr, error)

Deprecated: use github.com/libp2p/go-libp2p/p2p/transport/websocket.ParseWebsocketNetAddr instead.

Types

type Addr

type Addr = websocket.Addr

Addr is an implementation of net.Addr for WebSocket. Deprecated: use github.com/libp2p/go-libp2p/p2p/transport/websocket.Addr instead.

func NewAddr

func NewAddr(host string) *Addr

NewAddr creates an Addr with `ws` scheme (insecure).

Deprecated. Use NewAddrWithScheme.

func NewAddrWithScheme added in v0.7.0

func NewAddrWithScheme(host string, isSecure bool) *Addr

NewAddrWithScheme creates a new Addr using the given host string. isSecure should be true for WSS connections and false for WS. Deprecated: use github.com/libp2p/go-libp2p/p2p/transport/websocket.NewAddrWithScheme instead.

type Conn

type Conn = websocket.Conn

Conn implements net.Conn interface for gorilla/websocket. Deprecated: use github.com/libp2p/go-libp2p/p2p/transport/websocket.Conn instead.

func NewConn

func NewConn(raw *ws.Conn, secure bool) *Conn

NewConn creates a Conn given a regular gorilla/websocket Conn. Deprecated: use github.com/libp2p/go-libp2p/p2p/transport/websocket.NewConn instead.

type Option deprecated added in v0.7.0

type Option = websocket.Option

Deprecated: use github.com/libp2p/go-libp2p/p2p/transport/websocket.Option instead.

func WithTLSClientConfig added in v0.7.0

func WithTLSClientConfig(c *tls.Config) Option

WithTLSClientConfig sets a TLS client configuration on the WebSocket Dialer. Only relevant for non-browser usages.

Some useful use cases include setting InsecureSkipVerify to `true`, or setting user-defined trusted CA certificates. Deprecated: use github.com/libp2p/go-libp2p/p2p/transport/websocket.WithTLSClientConfig instead.

func WithTLSConfig added in v0.7.0

func WithTLSConfig(conf *tls.Config) Option

WithTLSConfig sets a TLS configuration for the WebSocket listener. Deprecated: use github.com/libp2p/go-libp2p/p2p/transport/websocket.WithTLSConfig instead.

type WebsocketTransport

type WebsocketTransport = websocket.WebsocketTransport

WebsocketTransport is the actual go-libp2p transport Deprecated: use github.com/libp2p/go-libp2p/p2p/transport/websocket.WebsocketTransport instead.

func New deprecated

Deprecated: use github.com/libp2p/go-libp2p/p2p/transport/websocket.New instead.

Directories

Path Synopsis
tools module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL