Does Websocket use the same TCP connection that was used by the initial HTTP for the handshake?












1















I want to set up a cluster of Node.js services with a Load Balancer in front of them (which for some reasons can't have sticky sessions).



Let's imaging I have two Nodes, and client (browser, for instance, using socket.io) sends wss:// request, and first Node gets it from LB, then it sends back to the client 'HTTP/1.1 101 Web Socket Protocol Handshake' response.




  1. Will client and server afterwards use the same TCP connection for sending frames that was used for the initial client request? Or a new TCP connection will be established which might potentially be forwarded to the second Node by LB?


  2. In case of using socket.io, it might still fallback and actually send long polling over http before WebSocket connection is established for performance. Are those polling requests can end up on different backend nodes?











share|improve this question





























    1















    I want to set up a cluster of Node.js services with a Load Balancer in front of them (which for some reasons can't have sticky sessions).



    Let's imaging I have two Nodes, and client (browser, for instance, using socket.io) sends wss:// request, and first Node gets it from LB, then it sends back to the client 'HTTP/1.1 101 Web Socket Protocol Handshake' response.




    1. Will client and server afterwards use the same TCP connection for sending frames that was used for the initial client request? Or a new TCP connection will be established which might potentially be forwarded to the second Node by LB?


    2. In case of using socket.io, it might still fallback and actually send long polling over http before WebSocket connection is established for performance. Are those polling requests can end up on different backend nodes?











    share|improve this question



























      1












      1








      1


      1






      I want to set up a cluster of Node.js services with a Load Balancer in front of them (which for some reasons can't have sticky sessions).



      Let's imaging I have two Nodes, and client (browser, for instance, using socket.io) sends wss:// request, and first Node gets it from LB, then it sends back to the client 'HTTP/1.1 101 Web Socket Protocol Handshake' response.




      1. Will client and server afterwards use the same TCP connection for sending frames that was used for the initial client request? Or a new TCP connection will be established which might potentially be forwarded to the second Node by LB?


      2. In case of using socket.io, it might still fallback and actually send long polling over http before WebSocket connection is established for performance. Are those polling requests can end up on different backend nodes?











      share|improve this question
















      I want to set up a cluster of Node.js services with a Load Balancer in front of them (which for some reasons can't have sticky sessions).



      Let's imaging I have two Nodes, and client (browser, for instance, using socket.io) sends wss:// request, and first Node gets it from LB, then it sends back to the client 'HTTP/1.1 101 Web Socket Protocol Handshake' response.




      1. Will client and server afterwards use the same TCP connection for sending frames that was used for the initial client request? Or a new TCP connection will be established which might potentially be forwarded to the second Node by LB?


      2. In case of using socket.io, it might still fallback and actually send long polling over http before WebSocket connection is established for performance. Are those polling requests can end up on different backend nodes?








      node.js http websocket load-balancing






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 20 '18 at 21:06







      Klimashkin

















      asked Nov 19 '18 at 21:41









      KlimashkinKlimashkin

      253414




      253414
























          1 Answer
          1






          active

          oldest

          votes


















          1















          1. Yes, WebSockets use the same TCP/IP connection that was used during the HTTP handshake.


          2. Yes, long polling might be routed to different nodes, unless specifically set up to avoid doing so (which I wouldn't recommend, as it signals a scaling weakness in the architecture).







          share|improve this answer























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53383042%2fdoes-websocket-use-the-same-tcp-connection-that-was-used-by-the-initial-http-for%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1















            1. Yes, WebSockets use the same TCP/IP connection that was used during the HTTP handshake.


            2. Yes, long polling might be routed to different nodes, unless specifically set up to avoid doing so (which I wouldn't recommend, as it signals a scaling weakness in the architecture).







            share|improve this answer




























              1















              1. Yes, WebSockets use the same TCP/IP connection that was used during the HTTP handshake.


              2. Yes, long polling might be routed to different nodes, unless specifically set up to avoid doing so (which I wouldn't recommend, as it signals a scaling weakness in the architecture).







              share|improve this answer


























                1












                1








                1








                1. Yes, WebSockets use the same TCP/IP connection that was used during the HTTP handshake.


                2. Yes, long polling might be routed to different nodes, unless specifically set up to avoid doing so (which I wouldn't recommend, as it signals a scaling weakness in the architecture).







                share|improve this answer














                1. Yes, WebSockets use the same TCP/IP connection that was used during the HTTP handshake.


                2. Yes, long polling might be routed to different nodes, unless specifically set up to avoid doing so (which I wouldn't recommend, as it signals a scaling weakness in the architecture).








                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 19 '18 at 23:25









                MystMyst

                12k22542




                12k22542






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53383042%2fdoes-websocket-use-the-same-tcp-connection-that-was-used-by-the-initial-http-for%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    android studio warns about leanback feature tag usage required on manifest while using Unity exported app?

                    SQL update select statement

                    'app-layout' is not a known element: how to share Component with different Modules