Absurdev
Absurdev

Reputation: 284

Using websocket over raw tcp even when no web browser is involved: good idea?

After reviewing the differences between raw TCP and websocket, I am thinking to use websocket, even though it will be a client/server system with no web browser in the picture. My motivation stems from:

  1. websocket is message-oriented, so I do not have to write down a protocol on top of the tcp layer to delimit messages myself.
  2. The initial handshake of websocket is quite fitting for my use case as I can authenticate/authorize the user in this initial response-request exchange.

Performance does matter a lot here though, I am wondering if, excluding the websocket handshake, there would be a loss of performance between the websocket messages vs writing a custom protocol on raw tcp? If not, then websocket is the most convenient choice to me, even if I don't use the benefits related to the "web" part.

Also would using wss change the answer to the above question?

Upvotes: 0

Views: 180

Answers (1)

Steffen Ullrich
Steffen Ullrich

Reputation: 123551

You are basically asking if using an already implemented library which perfectly fits your requirements and which even has the option for secure connections (wss) is better then designing and implementing your own message based protocol on TCP, assuming that performance and overhead are not relevant for your use case.

If you rephrase your question this way the answer should be obvious: using an existing implementation which fits your purpose saves you a lot of time and hassle for design, implementation and testing. It is also easier to train developers to use this protocol. It is easier to debug problems since common tools like Wireshark understand the protocol already.

Apart from this websockets have an established mechanism to use proxies, use a common protocol so that they can easier pass firewalls etc. So you will likely run into less problems when rolling out your application.

In other words: I can see no reason on why you should not use websockets if they fit your purpose.

Upvotes: 1

Related Questions