By the way, yes, I got confused about that ws: earlier, as far as I recall you only need to use it in the address if it is an absolute URI address, otherwise a relative address and the WebSocket transportId attribute is enough

Sergey
On 27/07/16 16:34, Sergey Beryozkin wrote:
Look at that demo and check README/etc, and make it work in Karaf.
I haven't written it but looks like it has all the info needed

Sergey
On 27/07/16 16:25, CLEMENT Jean-Philippe wrote:
Good, I went to
https://github.com/apache/cxf/tree/master/distribution/src/main/release/samples/jax_rs/websocket_osgi
and added the missing cxf-transports-websocket-server feature.

Things get better :) ... now I get NoClassDefFoundError:
org/apache/cxf/transport/http_jetty/JettyHTTPServerEngineFactory.

Well, starting from a Karaf basic custom assembly, what features am I
expected to add as bootFeatures in order to get CXF+WebSockets running?

Regards,
JP

-----Message d'origine-----
De : Sergey Beryozkin [mailto:[email protected]]
Envoyé : mercredi 27 juillet 2016 15:07
À : [email protected]
Objet : Re: Error during WebSocket handshake: Unexpected response code

Look at the websocket_osgi demo done by Aki

Sergey

On 27/07/16 15:55, CLEMENT Jean-Philippe wrote:
Haha, it seems I'm in the "servlet container mode" and not the "Jetty
embedded mode"... so I would have, as far as I understood, set both
the address as a path and the transportId to
http://cxf.apache.org/transports/websocket.

I did try but I get the following exception:
BusException: No DestinationFactory was found for the namespace
http://cxf.apache.org/transports/websocket

What should I add to get rid of this exception?

Regards,
JP

-----Message d'origine-----
De : CLEMENT Jean-Philippe
[mailto:[email protected]]
Envoyé : mercredi 27 juillet 2016 14:44 À : [email protected] Objet
: RE: Error during WebSocket handshake: Unexpected response code

I don't find the issue but something is strange; the /cxf page displays:
    Endpoint address: http://localhost:8181/cxfws://localhost/socket

My blueprint is:
    <jaxrs:server id="something" address="ws://localhost/socket">

The address parsing seems strange isn't it?

Regards,
JP

-----Message d'origine-----
De : Sergey Beryozkin [mailto:[email protected]] Envoyé : mercredi
27 juillet 2016 14:35 À : [email protected] Objet : Re: Error
during WebSocket handshake: Unexpected response code

I've run a demo which Aki did and it works fine.
Yes make sure 'ws:' (or wss:) is used, it enables the loading of the
CXF WebSocket transport which can support both WebSocket and 'plain'
HTTP

Cheers, Sergey
On 27/07/16 13:49, CLEMENT Jean-Philippe wrote:
Hi Sergey,

I added "socket.binaryType= 'arraybuffer';" but I get the same
error. I'm not too sure if it is used or not as I don't know when
WebSocket tries to connect, and setting socket.binaryType or
socket.binarytype or socket.whatEver does not display any error.

Also, I'm wondering about the CXF configuration, is the binding to a
separate server configured with a "ws://..." (the "ws" part) address
mandatory?

Regards,
JP

-----Message d'origine-----
De : Sergey Beryozkin [mailto:[email protected]] Envoyé : mercredi
27 juillet 2016 12:34 À : [email protected] Objet : Re: Error
during WebSocket handshake: Unexpected response code

Hi
On 27/07/16 12:26, CLEMENT Jean-Philippe wrote:
Dear CXF experts,

I'm trying to connect a web client to a CXF WebSocket. The browser
logs the error "WebSocket connection failed: Error during WebSocket
handshake: Unexpected response code: XXX". The XXX response code
changes depending on the @Produces annotation: 200 when text/plain,
406 when text/*.

406 with text/* can be explained by the fact the websocket client
does not know what HTTP Accept is and the spec requires that when the
final response type has a wildcard subtype (with the only exception
being
application/*) then it is 406.
The server Java looks like this:
@GET
@Path("monitor")
@Produces("text/*")
public StreamingOutput greetMonitor() {
     return stream -> {
      stream.write("Ok".getBytes());
      stream.flush();
     };
}

The client Javascript looks like this:
var socket= new
WebSocket("ws://myurlwithsameportaswebservice/cxf/test/monitor");

socket.onmessage= function(e) { console.log(e.data); };

What's wrong?
Can you please look at
https://github.com/apache/cxf/blob/master/distribution/src/main/relea
s e/samples/jax_rs/websocket/src/main/resources/index.html

may be you need to set a socket type

Cheers, Sergey


Regards,
JP



--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/



--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/



--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/





--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Reply via email to