Tcp

org.apache.pekko.stream.scaladsl.Tcp
See theTcp companion object
final class Tcp(system: ExtendedActorSystem) extends Extension

Attributes

Companion
object
Source
Tcp.scala
Graph
Supertypes
trait Extension
class Object
trait Matchable
class Any

Members list

Value members

Concrete methods

def bind(interface: String, port: Int, backlog: Int, options: Iterable[SocketOption], halfClose: Boolean, idleTimeout: Duration): Source[IncomingConnection, Future[ServerBinding]]

Creates a Tcp.ServerBinding instance which represents a prospective TCP server binding on the given endpoint.

Creates a Tcp.ServerBinding instance which represents a prospective TCP server binding on the given endpoint.

Please note that the startup of the server is asynchronous, i.e. after materializing the enclosing pekko.stream.scaladsl.RunnableGraph the server is not immediately available. Only after the materialized future completes is the server ready to accept client connections.

Value parameters

backlog

Controls the size of the connection backlog

halfClose

Controls whether the connection is kept open even after writing has been completed to the accepted TCP connections. If set to true, the connection will implement the TCP half-close mechanism, allowing the client to write to the connection even after the server has finished writing. The TCP socket is only closed after both the client and server finished writing. If set to false, the connection will immediately closed once the server closes its write side, independently whether the client is still attempting to write. This setting is recommended for servers, and therefore it is the default setting.

interface

The interface to listen on

options

TCP options for the connections, see pekko.io.Tcp for details

port

The port to listen on

Attributes

Source
Tcp.scala
def bindAndHandle(handler: Flow[ByteString, ByteString, _], interface: String, port: Int, backlog: Int, options: Iterable[SocketOption], halfClose: Boolean, idleTimeout: Duration)(implicit m: Materializer): Future[ServerBinding]

Creates a Tcp.ServerBinding instance which represents a prospective TCP server binding on the given endpoint handling the incoming connections using the provided Flow.

Creates a Tcp.ServerBinding instance which represents a prospective TCP server binding on the given endpoint handling the incoming connections using the provided Flow.

Please note that the startup of the server is asynchronous, i.e. after materializing the enclosing pekko.stream.scaladsl.RunnableGraph the server is not immediately available. Only after the returned future completes is the server ready to accept client connections.

Value parameters

backlog

Controls the size of the connection backlog

halfClose

Controls whether the connection is kept open even after writing has been completed to the accepted TCP connections. If set to true, the connection will implement the TCP half-close mechanism, allowing the client to write to the connection even after the server has finished writing. The TCP socket is only closed after both the client and server finished writing. If set to false, the connection will immediately closed once the server closes its write side, independently whether the client is still attempting to write. This setting is recommended for servers, and therefore it is the default setting.

handler

A Flow that represents the server logic

interface

The interface to listen on

options

TCP options for the connections, see pekko.io.Tcp for details

port

The port to listen on

Attributes

Source
Tcp.scala
def bindAndHandleWithTls(handler: Flow[ByteString, ByteString, _], interface: String, port: Int, createSSLEngine: () => SSLEngine)(implicit m: Materializer): Future[ServerBinding]

Creates a Tcp.ServerBinding instance which represents a prospective TCP server binding on the given endpoint all incoming and outgoing bytes are passed through TLS and handling the incoming connections using the provided Flow.

Creates a Tcp.ServerBinding instance which represents a prospective TCP server binding on the given endpoint all incoming and outgoing bytes are passed through TLS and handling the incoming connections using the provided Flow.

You specify a factory to create an SSLEngine that must already be configured for server mode and with all the parameters for the first session.

Attributes

See also
Source
Tcp.scala
def bindAndHandleWithTls(handler: Flow[ByteString, ByteString, _], interface: String, port: Int, createSSLEngine: () => SSLEngine, backlog: Int, options: Seq[SocketOption], idleTimeout: Duration, verifySession: SSLSession => Try[Unit], closing: TLSClosing)(implicit m: Materializer): Future[ServerBinding]

Creates a Tcp.ServerBinding instance which represents a prospective TCP server binding on the given endpoint all incoming and outgoing bytes are passed through TLS and handling the incoming connections using the provided Flow.

Creates a Tcp.ServerBinding instance which represents a prospective TCP server binding on the given endpoint all incoming and outgoing bytes are passed through TLS and handling the incoming connections using the provided Flow.

You specify a factory to create an SSLEngine that must already be configured for server mode and with all the parameters for the first session.

Attributes

See also
Source
Tcp.scala
def bindWithTls(interface: String, port: Int, createSSLEngine: () => SSLEngine): Source[IncomingConnection, Future[ServerBinding]]

Creates a Tcp.ServerBinding instance which represents a prospective TCP server binding on the given endpoint where all incoming and outgoing bytes are passed through TLS.

Creates a Tcp.ServerBinding instance which represents a prospective TCP server binding on the given endpoint where all incoming and outgoing bytes are passed through TLS.

You specify a factory to create an SSLEngine that must already be configured for server mode and with all the parameters for the first session.

Attributes

See also
Source
Tcp.scala
def bindWithTls(interface: String, port: Int, createSSLEngine: () => SSLEngine, backlog: Int, options: Seq[SocketOption], idleTimeout: Duration, verifySession: SSLSession => Try[Unit], closing: TLSClosing): Source[IncomingConnection, Future[ServerBinding]]

Creates a Tcp.ServerBinding instance which represents a prospective TCP server binding on the given endpoint where all incoming and outgoing bytes are passed through TLS.

Creates a Tcp.ServerBinding instance which represents a prospective TCP server binding on the given endpoint where all incoming and outgoing bytes are passed through TLS.

You specify a factory to create an SSLEngine that must already be configured for server mode and with all the parameters for the first session.

Attributes

See also
Source
Tcp.scala
def outgoingConnection(remoteAddress: InetSocketAddress, localAddress: Option[InetSocketAddress], options: Iterable[SocketOption], halfClose: Boolean, connectTimeout: Duration, idleTimeout: Duration): Flow[ByteString, ByteString, Future[OutgoingConnection]]

Creates an Tcp.OutgoingConnection instance representing a prospective TCP client connection to the given endpoint.

Creates an Tcp.OutgoingConnection instance representing a prospective TCP client connection to the given endpoint.

Note that the ByteString chunk boundaries are not retained across the network, to achieve application level chunks you have to introduce explicit framing in your streams, for example using the Framing operators.

Value parameters

halfClose

Controls whether the connection is kept open even after writing has been completed to the accepted TCP connections. If set to true, the connection will implement the TCP half-close mechanism, allowing the server to write to the connection even after the client has finished writing. The TCP socket is only closed after both the client and server finished writing. This setting is recommended for clients and therefore it is the default setting. If set to false, the connection will immediately closed once the client closes its write side, independently whether the server is still attempting to write.

localAddress

Optional local address for the connection

options

TCP options for the connections, see pekko.io.Tcp for details

remoteAddress

The remote address to connect to

Attributes

Source
Tcp.scala

Creates an Tcp.OutgoingConnection without specifying options. It represents a prospective TCP client connection to the given endpoint.

Creates an Tcp.OutgoingConnection without specifying options. It represents a prospective TCP client connection to the given endpoint.

Note that the ByteString chunk boundaries are not retained across the network, to achieve application level chunks you have to introduce explicit framing in your streams, for example using the Framing operators.

Attributes

Source
Tcp.scala
def outgoingConnectionWithTls(remoteAddress: InetSocketAddress, createSSLEngine: () => SSLEngine): Flow[ByteString, ByteString, Future[OutgoingConnection]]

Creates an Tcp.OutgoingConnection with TLS. The returned flow represents a TCP client connection to the given endpoint where all bytes in and out go through TLS.

Creates an Tcp.OutgoingConnection with TLS. The returned flow represents a TCP client connection to the given endpoint where all bytes in and out go through TLS.

You specify a factory to create an SSLEngine that must already be configured for client mode and with all the parameters for the first session.

Attributes

See also
Source
Tcp.scala
def outgoingConnectionWithTls(remoteAddress: InetSocketAddress, createSSLEngine: () => SSLEngine, localAddress: Option[InetSocketAddress], options: Seq[SocketOption], connectTimeout: Duration, idleTimeout: Duration, verifySession: SSLSession => Try[Unit], closing: TLSClosing): Flow[ByteString, ByteString, Future[OutgoingConnection]]

Creates an Tcp.OutgoingConnection with TLS. The returned flow represents a TCP client connection to the given endpoint where all bytes in and out go through TLS.

Creates an Tcp.OutgoingConnection with TLS. The returned flow represents a TCP client connection to the given endpoint where all bytes in and out go through TLS.

You specify a factory to create an SSLEngine that must already be configured for client mode and with all the parameters for the first session.

Attributes

See also
Source
Tcp.scala

Deprecated methods

def bindAndHandleTls(handler: Flow[ByteString, ByteString, _], interface: String, port: Int, sslContext: SSLContext, negotiateNewSession: NegotiateNewSession, backlog: Int, options: Iterable[SocketOption], idleTimeout: Duration)(implicit m: Materializer): Future[ServerBinding]

Creates a Tcp.ServerBinding instance which represents a prospective TCP server binding on the given endpoint handling the incoming connections through TLS and then run using the provided Flow.

Creates a Tcp.ServerBinding instance which represents a prospective TCP server binding on the given endpoint handling the incoming connections through TLS and then run using the provided Flow.

Value parameters

negotiateNewSession

Details about what to require when negotiating the connection with the server

sslContext

Context containing details such as the trust and keystore

Attributes

See also

Tcp.bindAndHandle Marked API-may-change to leave room for an improvement around the very long parameter list.

Deprecated
true
Source
Tcp.scala
def bindTls(interface: String, port: Int, sslContext: SSLContext, negotiateNewSession: NegotiateNewSession, backlog: Int, options: Iterable[SocketOption], idleTimeout: Duration): Source[IncomingConnection, Future[ServerBinding]]

Creates a Tcp.ServerBinding instance which represents a prospective TCP server binding on the given endpoint where all incoming and outgoing bytes are passed through TLS.

Creates a Tcp.ServerBinding instance which represents a prospective TCP server binding on the given endpoint where all incoming and outgoing bytes are passed through TLS.

Value parameters

negotiateNewSession

Details about what to require when negotiating the connection with the server

sslContext

Context containing details such as the trust and keystore

Attributes

See also
Deprecated
true
Source
Tcp.scala
def outgoingTlsConnection(host: String, port: Int, sslContext: SSLContext, negotiateNewSession: NegotiateNewSession): Flow[ByteString, ByteString, Future[OutgoingConnection]]

Creates an Tcp.OutgoingConnection with TLS. The returned flow represents a TCP client connection to the given endpoint where all bytes in and out go through TLS.

Creates an Tcp.OutgoingConnection with TLS. The returned flow represents a TCP client connection to the given endpoint where all bytes in and out go through TLS.

For more advanced use cases you can manually combine Tcp.outgoingConnection and TLS

Value parameters

negotiateNewSession

Details about what to require when negotiating the connection with the server

sslContext

Context containing details such as the trust and keystore

Attributes

See also
Deprecated
true
Source
Tcp.scala
def outgoingTlsConnection(remoteAddress: InetSocketAddress, sslContext: SSLContext, negotiateNewSession: NegotiateNewSession, localAddress: Option[InetSocketAddress], options: Iterable[SocketOption], connectTimeout: Duration, idleTimeout: Duration): Flow[ByteString, ByteString, Future[OutgoingConnection]]

Creates an Tcp.OutgoingConnection with TLS. The returned flow represents a TCP client connection to the given endpoint where all bytes in and out go through TLS.

Creates an Tcp.OutgoingConnection with TLS. The returned flow represents a TCP client connection to the given endpoint where all bytes in and out go through TLS.

Value parameters

negotiateNewSession

Details about what to require when negotiating the connection with the server

sslContext

Context containing details such as the trust and keystore

Attributes

See also
Deprecated
true
Source
Tcp.scala

Concrete fields