WebSocket Server Refuses Every Client Attempt to Connect

Unsolved

Hello everyone, I have just started learning Spring Boot and I was hoping someone here could help me with what feels like a really simple issue. It has taken me days without any real hope yet for fixing whatever this is.

After failing 50+ times to get a basic Java WebSocket Server working on a very old Java EE 7 in Netbeans, I decided to try doing it in Spring Boot, following really simple guides like

https://springhow.com/spring-boot-websocket/

and https://www.javainuse.com/spring/boot-websocket

The javainuse one especially is so straightforward...but still no luck.

I still receive the same error with Spring Boot now, "WebSocket connection to 'ws://localhost:8080/user/' failed", no matter what I do.

It feels like there's an issue with my PC but I've opened the port (yougetsignal verifies), tried turning off firewall, used the public IP vs. localhost, switched endpoints (also tried with "/" and adding an .setAllowedOrigins("*") to my handler function call), enabled WebSockets in "Turn Windows Features on and off", added an inbound firewall rule allowing everything for the port, etc.

I am so lost on what could be wrong, but it can't be the code, right? I've taken these basic projects line for line from these guides but the connection just never gets made.

When I tried connecting through a separate NodeJS project, it returned "Unexpected server response: 200". The server shows this: https://i.imgur.com/nBaxKOq.png

I'm on Windows 10 and don't know what more to try. I thought Spring Boot would be simple enough with all the documentation and help online, but I am out of ideas. Does anyone know what could be wrong?

Edit: I finally figured it out, thank you everyone for trying to help. I did not set up the WebSocketConfig file correctly so it seems like it was never registering the endpoint before. I redid that part, and now it connects and says "Completed 101 SWITCHING_PROTOCOLS". The code was from https://www.javainuse.com/spring/boot-websocket

Posted Oct 16, 2022, 2:08 AM UTC · edited

57
AutoModeratorMOD•

#Please ensure that:

  • Your code is properly formatted as code block - see the sidebar (About on mobile) for instructions

  • You include any and all error messages in full

  • You ask clear questions

  • You demonstrate effort in solving your question/problem - plain posting your assignments is forbidden (and such posts will be removed) as is asking for or giving solutions.

    Trying to solve problems on your own is a very important skill. Also, see Learn to help yourself in the sidebar

If any of the above points is not met, your post can and will be removed without further warning.

Code is to be formatted as code block (old reddit: empty line before the code, each code line indented by 4 spaces, new reddit: https://imgur.com/a/fgoFFis) or linked via an external code hoster, like pastebin.com, github gist, github, bitbucket, gitlab, etc.

Please, do not use triple backticks (```) as they will only render properly on new reddit, not on old reddit.

Code blocks look like this:

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

You do not need to repost unless your post has been removed by a moderator. Just use the edit function of reddit to make sure your post complies with the above.

If your post has remained in violation of these rules for a prolonged period of time (at least an hour), a moderator may remove it at their discretion. In this case, they will comment with an explanation on why it has been removed, and you will be required to resubmit the entire post following the proper procedures.

#To potential helpers

Please, do not help if any of the above points are not met, rather report the post. We are trying to improve the quality of posts here. In helping people who can't be bothered to comply with the above points, you are doing the community a disservice.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1
msx•

What error messages are you reading, both on the browser and on your server?

1
rahulpresentskobeOP•

On the browser there's no error except "connection failed" on console. Is there somewhere else I should look?

The server itself has no errors. I enabled debugging in my application settings though and was able to get this on the server logs https://i.imgur.com/nBaxKOq.png

1
dwargo•

A websocket endpoint should return a status 101 to switch protocols - a 200 would indicate the server doesn’t think there’s a websocket at that URL. So you’re connecting fine but the URL is wrong.

In eclipse the project name is usually part of the URL, like was://localhost:8080/com.contoso.project/user/. I don’t know how netbeans does things though.

Try hitting that URL with a browser and see what it says.

1
rahulpresentskobeOP•

I tried with my project name, both in browser URL and with the JS but it gave me a 404

1
dwargo•

I think if you press the debug button it will pop up a built-in browser with the correct URL. It’s been like ten years since I switched to Eclipse though, so I’m not positive.

Or you could find the tomcat installation and look at the jar/directory name under the webapps directory. That’s how tomcat actually finds the app, with the exception that a jar named ROOT goes at the root.

I recently switched my projects to maven and it changed the URL from the project name to the artifact ID, but I don’t know if that’s an eclipse thing or a maven thing.

1
AutoModeratorMOD•

It seems that you possibly have a screenshot of code in your post WebSocket Server Refuses Every Client Attempt to Connect in r/javahelp.

Screenshots of code instead of actual code text is against the [Code posting rules of r/javahelp](http://www.reddit.com/r/javahelp/wiki/code_guides) as is also outlined in the sidebar - Code posting.

  • Never submit screenshots of code instead of code text!

If you posted an image merely to illustrate something, kindly ignore this message and do not repost. Your post is still visible to others. I am a bot and cannot distinguish between code screenshots and other images.

If you indeed did this wrong, please edit the post so that it uses one of the approved means of posting code.

  • For small bits of code (less than 50 lines in total, single classes only),
    the default code formatter is fine
    (one blank line before the code, then 4 spaces before each line of code).
  • Pastebin for programs that consist of a single class only
  • Gist for multi-class programs, or programs that require additional files
  • Github or Bitbucket repositories are also perfectly fine as are other dedicated source code hosting sites.
  • Ideone for executable code snippets that use only the console

Please do not reply to this message, because I am a bot. Talk-to-the-bot is the new talk-to-the-hand. If you instead want the classic talk-to-the-hand, just message the moderators. ;)

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1