func websocketHandler(writer http.ResponseWriter, request *http.Request, bus *EventBus.EventBus) {
	connection, err := websocketUpgrader.Upgrade(writer, request, nil)
	if err != nil {
		log.Fatal("Failed to get websocket upgrade")
		return
	}

	for {
		typeMessage, message, err := connection.ReadMessage()
		bus.Publish(lib.NEW_MESSAGE_EVENT, string(message[:]))

		device_header := request.Header[DEVICE_ID_HEADER]

		if len(device_header) > 0 && device_header[0] != "" {
			bus.Publish(lib.NEW_DEVICE_EVENT, device_header[0])
		}

		if err != nil {
			log.Fatal(err)
			break
		}

		connection.WriteMessage(typeMessage, message)
	}
}