camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark <>
Subject Re: send same message to multiple, not all, websocket clients
Date Wed, 19 Oct 2016 14:01:20 GMT
Thanks for your help.  I am maintaining a Map<String,List<String>> of
client information.  I set the value of the map to the exchange header and
then send the message to a Splitter.  The splitter will split on the
exchange header and then I can send out the messages for each connection
key. Its working great.

On Wed, Oct 19, 2016 at 1:20 AM, <> wrote:

> Hi Mark,
>         you have to keep connection keys from each client in a map or list,
> then you need to send same data to the producer with different connection
> key.
> here is how you can get the connection key from each client. whenever a
> client makes a connection with your websocket consumer you will get a
> connection key.
> Apache camel websocket consumer example.
>      from("direct:Consumer1")
>     .process(new Processor() {
>      public void process(Exchange exchange) throws Exception {
>        Map<String, Object> headers=exchange.getIn().getHeaders();
>     //you will get a unique connection key from the exchange header.This
> would be unique for each client.
>     //store this key somewhere, to send messages to particular client.
>     String uniqueConnectionKey=headers.get("websocket.connectionKey")
> .toString();
>           //you can get message from the client like below.
>           String dataFromClient=exchange.getIn().getBody().toString();
>    }
> }).end();
> Apache camel websocket producer example:
>       from("direct:Producer1").
>       //we will use this connectionKey for uniquely identifying each
> connection from the client.
>       setHeader(WebsocketConstants.CONNECTION_KEY,
> header("connectionKey")).
>       to("websocket://{host}:{port}/camel-websocket?sendToAll=
> false").end();
> here is the sample for producer template.
> ProducerTemplate template=camelContext.createProducerTemplate();
> repeat this step with same message and different connection key:
> template.sendBodyAndHeader("direct:Producer1", {message},
> "connectionKey", {connectionkey});
> I hope this would help
> -----Original Message-----
> From: "Mark" <>
> Sent: Tuesday, October 18, 2016 10:51am
> To:
> Subject: send same message to multiple, not all, websocket clients
> I am receiving messages of data that I am processing with Camel, similar to
> a chat system.  Clients may "subscribe" to the data feed which will require
> me to send the messages to the clients that subscribe to that message type
> over websockets.  How can I implement this websocket communication using
> Camel since the current implementation only allows for one connection key
> per message?  Would I somehow duplicate the message and set a different
> connection key for each message?

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message