Does Websocket use the same TCP connection that was used by the initial HTTP for the handshake?
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.
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?
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
add a comment |
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.
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?
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
add a comment |
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.
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?
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
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.
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?
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
node.js http websocket load-balancing
edited Nov 20 '18 at 21:06
Klimashkin
asked Nov 19 '18 at 21:41
KlimashkinKlimashkin
253414
253414
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Yes, WebSockets use the same TCP/IP connection that was used during the HTTP handshake.
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).
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Yes, WebSockets use the same TCP/IP connection that was used during the HTTP handshake.
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).
add a comment |
Yes, WebSockets use the same TCP/IP connection that was used during the HTTP handshake.
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).
add a comment |
Yes, WebSockets use the same TCP/IP connection that was used during the HTTP handshake.
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).
Yes, WebSockets use the same TCP/IP connection that was used during the HTTP handshake.
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).
answered Nov 19 '18 at 23:25
MystMyst
12k22542
12k22542
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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