---
# System prepended metadata

title: Websockets (WS) vs Websocket over ActiveMQ

---

# Websockets (WS) vs Websocket over ActiveMQ


## Goal 
- **Websockets or Websocket over MQ** ? 


### Websockets (WS) 
- No error notification when the client failed to make a connection to the WS server
	- Most of error due to **invalid token** (Matrix Token). 
- Websockets server can't give error message to the client because the **client is not connected to the websocket server**. 

- Alternative solution. 
	- accept all the incoming connection then validate the token. if not valid then send error message. then close the WS connection. 
	- ETA : 1 day
	- Cons : 
		- when the client keep repating the same (invalid) token, the server would be exhausted and some ports will be occupied. (limit ports for each server is around 64k)
		- **This solution need to be tested (we don't know if there are other errors or not)**. if the client is not connected to the server ( ie. no internet connection ) then the WS server can't send any error message. 

- **Can't see any other solution so far**. 

### Websockets over ActiveMQ
- Client connect to websocket over ActiveMQ. 
- Cons: 
	- Diffent way to connect to the WS-activeMQ 
		- I can connect using **Javascript Stomp & Websocket**. 
		- I don't know about how android & ios connect to WS-activeMQ. (**I assume it's possible**)

	- **Authentication has to be handle by ActiveMQ** 
		- The way to handle **dynamic Authentication** (login using token that connected to the DB) is by developing **ActiveMQ Plugin** (This has to be in **JAVA**, because ActiveMQ is created using **JAVA**). 
		- The plugin will handle **dynamic authentication** & **one device one connection pattern**. 

	- Need more research on **Command Handler** (connection between **Python & WS-ActiveMQ**)

	- ETA: **~ N/A**
		- Command Handler, Python & WS-ActiveMQ connection (and the text message handler) : N/A
		    - Need to research on finding a library to connecting python and WS-activeMQ (so still can't find library that implement stomp-websocket (ws-over-activeMQ))
		    - Some Stomp library need to be tried (https://stomp.github.io/implementations.html)
		- Authentication (ActiveMQ plugin (JAVA)) : N/A 

![Architecture](https://i.imgur.com/1yuiQMA.png)


### Sample 

```sequence
Alice->Bob: Hello Bob, how are you?
Note right of Bob: Bob thinks
Bob-->Alice: I am good thanks!
Note left of Alice: Alice responds
Alice->Bob: Where have you been?
```
