[ 
https://issues.apache.org/jira/browse/CAMEL-9348?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15021094#comment-15021094
 ] 

ASF GitHub Bot commented on CAMEL-9348:
---------------------------------------

Github user tonswieb closed the pull request at:

    https://github.com/apache/camel/pull/690


> 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
>            Assignee: Claus Ibsen
>             Fix For: 2.16.2, 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)

Reply via email to