RTC Forums

Subscription => Support => Topic started by: usernametaken on March 03, 2018, 08:27:50 AM



Title: WebSocket Routing and Balancing
Post by: usernametaken on March 03, 2018, 08:27:50 AM
When I search for WebSocket Routing/Balancing I only get an OLD response that WebSockets are not Supported.

WebSockets are now supported - ... :)

Is it now possible to Root and/or Loadbalance WebSockets?


Title: Re: WebSocket Routing and Balancing
Post by: D.Tkalcec (RTC) on March 03, 2018, 02:49:17 PM
I have tested basic WebSockets routing functionality, but I recommend you to run your own tests and report if you bump into any problems. It other words, it should be working but since WebSockets are fairly new, there weren't many tests done using WebSockets and Data Routing / Load Balancing components.


Title: Re: WebSocket Routing and Balancing
Post by: usernametaken on March 05, 2018, 06:18:48 AM
If I understand WS correctly - It is based on a TCP socket.

So if I upgrade the HTTP to a WS then it creates a persistent TCP socket on the receiving/processing server and connects directly to the client using a WS(TCP socket)
So if normal routing/load balancing works... then the WEBSockets should also work.

Of course ... because the WS connection stays open/connected; individual messages after connection cannot be rooted/balanced to a different server.

Am I correct in my understanding?


Title: Re: WebSocket Routing and Balancing
Post by: D.Tkalcec (RTC) on March 05, 2018, 07:21:39 AM
WebSockets are a protocol extension for HTTP. It's not just TCP/IP data being sent and received. After the initial WebSocket upgrade handshake (which is done over HTTP), even though TRtcDataRouter and TRtcLoadBalancer components treat the rest of the data as "raw TCP/IP packets" (there will be no events triggered for WebSocket packet after the upgrade), TRtcHttpClient and TRtcHttpServer components (which are used by TRtcDataRouter and TRtcLoadBalancer components) need to continue checking that data being received actually follows WebSocket protocol rules (frame headers and formatting) and would stop processing packets if these protocol rules were NOT being followed.