ranch:handshake(3)

Name

ranch:handshake - Perform the transport handshake

Description

handshake(Ref)       -> {ok, Socket} | {continue, Info}
handshake(Ref, Opts) -> {ok, Socket} | {continue, Info}

Ref    :: ranch:ref()
Opts   :: any()
Socket :: any()
Info   :: any()

Perform the transport handshake.

This function must be called by the protocol process in order to retrieve the socket for the connection. Ranch performs the handshake necessary to give control of the socket to this process and also does the transport handshake, for example setting up the TLS connection.

Arguments

Ref

The listener name.

Opts

Transport handshake options.

Allowed options depend on the transport module.

Return value

An ok tuple is returned containing the socket for the connection by default.

Depending on configuration, a continue tuple can otherwise be returned when the handshake operation is paused. It contains data provided by the transport that can be used to inform further decisions before resuming the handshake, for example to provide new transport options. The handshake can be resumed using ranch:handshake_continue(3) or canceled using ranch:handshake_cancel(3).

This function will trigger an exception when an error occurs.

Changelog

  • 2.0: The continue tuple can now be returned.
  • 1.6: Function introduced. Replaces ranch:accept_ack/1.

Examples

Initialize the connection process
start_link(Ref, Transport, Opts) ->
    Pid = proc_lib:spawn_link(?MODULE, init,
        [Ref, Transport, Opts]),
    {ok, Pid}.

init(Ref, Transport, Opts) ->
    {ok, Socket} = ranch:handshake(Ref),
    loop(#state{ref=Ref, socket=Socket,
        transport=Transport, opts=Opts}).

See also

ranch:start_listener(3), ranch:handshake_continue(3), ranch:handshake_cancel(3), ranch:recv_proxy_header(3), ranch:remove_connection(3), ranch(3)

Ranch 2.3 Function Reference

Navigation

Version select

Sponsor me!

Support my work on Cowboy, Ranch, Gun and Erlang.mk via GitHub Sponsors. The funds cover domain names and development tools.