Hi,
Actually my websocket url is going through AWS API Gateway resource which sends request to server as plain http request hence it is failing to upgrade. By bypassing AWS it is working
fine. I have to figure out how Integration Request configuration can be done for websocket at AWS side so that the wss protocol is not lost.
Thanks for the help
@Lachlan Roberts.
From: Lachlan Roberts <lachlan@xxxxxxxxxxx>
Sent: Tuesday, March 12, 2024 3:35 PM
To: Yash Sharma <ysharma@xxxxxxxxx>
Cc: JETTY user mailing list <jetty-users@xxxxxxxxxxx>
Subject: Re: EXTERNAL- Re: [jetty-users] websocket-jetty-server not able to upgrade request to websocket
Judging by the partial stack trace you provided your configuration is fine as it made it to the websocket negotiation.
Are you saying that no HTTP response was received and the connection was aborted?
(normally there would be a 101 response for successful upgrade request and some other error code if there was a failure during the upgrade).
Can you please provide the debug logs from Jetty?
Thanks for the input Roberts, actually upgrade request fails for an http request made. For ws:// request I am seeing connection failed. Do I need
to add websocket-jetty related configuration in jetty.xml configuration file?
Can some please share a snippet of the configuration to be added ?
Thanks,
Yash Sharma
CAUTION: This email originated from outside
eGain. Do not click links or open attachments unless you can verify the sender and know the content is safe.
|
These two lines do exactly the same thing btw, so might want to remove one
factory.register(MySocket.class);
factory.addMapping("/", (req,res)->new MySocket());
Can you look at the HTTP response to the websocket upgrade request.
You also can enable Jetty debug logging for websocket and see exactly what is happening.
Hi All,
I am trying to make websocket connection using html and _javascript_.
My client is as follows:
const socketUrl = "ws://host:port/example";
const socket = new WebSocket(socketUrl);[
And I have Servlet as follows
@WebServlet(name = "WebSocket Servlet", urlPatterns = { "/example" })
public class MyWSServlet extends JettyWebSocketServlet
{
@Override
public void configure(JettyWebSocketServletFactory factory) {
factory.setIdleTimeout(Duration.ofSeconds(1000));
factory.register(MySocket.class);
factory.addMapping("/", (req,res)->new MySocket());
}
}
@WebSocket
public class MySocket{
@OnWebSocketConnect
public void onConnect(Session session) {
System.out.println("Connect: " + session.getRemoteAddress());
}
}
I am using websocket-jetty-server dependency in pom.xml
When I try to hit the ws api, at server side I see that in upgradeRequest() validateNegotiation returns false and hence request is not upgraded to websocket.
As per chat gpt negotiateHeaders() is responsible to add Upgrade:websocket in request headers. But I do not see that happening in jetty.
I have attached stack trace for reference. Can someone please help me with this problem to establish a websocket connection using jetty?
The message that I see in browser console is “connection to 'ws://host:port/example' failed:”
Thanks,
Yash Sharma
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jetty-users
|