[
https://issues.apache.org/jira/browse/CAMEL-9348?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ton Swieb updated CAMEL-9348:
-----------------------------
Fix Version/s: 2.17.0
> Endpoints for the same websocket with different parameters cannot send
> message to websocket client
> --------------------------------------------------------------------------------------------------
>
> Key: CAMEL-9348
> URL: https://issues.apache.org/jira/browse/CAMEL-9348
> Project: Camel
> Issue Type: Bug
> Components: camel-websocket
> Affects Versions: 2.16.0, 2.15.4, 2.17.0
> Reporter: Ton Swieb
> Fix For: 2.17.0
>
>
> Having multiple routes with the same websocket consumer/producer causes only
> the first route to initialize correctly when the endpoint parameters are
> different per used consumer/producer endpoint URI.
> In the following example only the first route to register the websocket
> endpoint will work. The second route will not work.
> {code}
> from("websocket://localhost:" + port + "/bar")
> .transform().simple("The bar has ${body}")
> .to("websocket://localhost:" + port + "/bar");
> from("timer://foo?fixedRate=true&period=12000")
> .setBody(constant("Broadcasting to Bar"))
> .to("websocket://localhost:" + port +
> "/bar?sendToAll=true");
> {code}
> When the endpoint parameters are the same and a header value is used for
> broadcasting then both routes will work as expected:
> {code}
> from("websocket://localhost:" + port + "/bar")
> .transform().simple("The bar has ${body}")
> .to("websocket://localhost:" + port + "/bar");
> from("timer://foo?fixedRate=true&period=12000")
> .setBody(constant("Broadcasting to Bar"))
> .setHeader(WebsocketConstants.SEND_TO_ALL,constant(true))
> .to("websocket://localhost:" + port + "/bar");
> {code}
> The NodeSynchronization / WebSocketStore which contains all registered
> clients is maintained per endpoint and only the NodeSynchronization of the
> 1st registered endpoint is linked to the WeboscketServlet. The
> NodeSynchronization of all subsequent endpoints are not linked to the
> WebsocketServlet and are unaware of the connected websocket clients.
> The endpoints URI /bar and /bar?sendToAll=true are treated as different
> endpoints, but belong to the same websocket.
> I created a fix and will make a PR for it.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)