[[AHC-WS-AsyncHttpClientWebsocketClientComponent]]
Async Http Client (AHC) Websocket Client Component
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

*Available as of Camel 2.14*

The *ahc-ws* component provides Websocket
based link:endpoint.html[endpoints] for a client communicating with
external servers over Websocket (as a client opening a websocket
connection to an external server). +
The component uses the link:ahc.html[AHC] component that in turn uses
the https://github.com/AsyncHttpClient/async-http-client[Async Http
Client] library.

Maven users will need to add the following dependency to
their `pom.xml` for this component:

[source,xml]
------------------------------------------------------------
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-ahc-ws</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
------------------------------------------------------------

[[AHC-WS-URIFormat]]
URI Format
^^^^^^^^^^

[source,java]
-------------------------------------------------
ahc-ws://hostname[:port][/resourceUri][?options]
ahc-wss://hostname[:port][/resourceUri][?options]
-------------------------------------------------

Will by default use port 80 for ahc-ws and 443 for ahc-wss.

[[AHC-WS-AHC-WSOptions]]
AHC-WS Options
^^^^^^^^^^^^^^

As the AHC-WS component is based on the AHC component, you can use the
various configuration options of the AHC component.

[[AHC-WS-WritingandReadingDataoverWebsocket]]
Writing and Reading Data over Websocket
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

An ahc-ws endpoint can either write data to the socket or read from the
socket, depending on whether the endpoint is configured as the producer
or the consumer, respectively.

[[AHC-WS-ConfiguringURItoWriteorReadData]]
Configuring URI to Write or Read Data
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

In the route below, Camel will write to the specified websocket
connection.

[source,java]
-----------------------------------
from("direct:start")
        .to("ahc-ws://targethost");
-----------------------------------

And the equivalent Spring sample:

[source,xml]
------------------------------------------------------------
<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="direct:start"/>
    <to uri="ahc-ws://targethost"/>
  </route>
</camelContext>
------------------------------------------------------------

In the route below, Camel will read from the specified websocket
connection.

[source,java]
---------------------------
from("ahc-ws://targethost")
        .to("direct:next");
---------------------------

And the equivalent Spring sample:

[source,xml]
------------------------------------------------------------
<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="ahc-ws://targethost"/>
    <to uri="direct:next"/>
  </route>
</camelContext>
------------------------------------------------------------

 

[[AHC-WS-SeeAlso]]
See Also
^^^^^^^^

* link:configuring-camel.html[Configuring Camel]
* link:component.html[Component]
* link:endpoint.html[Endpoint]
* link:getting-started.html[Getting Started]

* link:../../../../camel-ahc/src/main/docs/readme.html[AHC]
* link:atmosphere-websocket.html[Atmosphere-Websocket]

